- About Scala
- Documentation
- Code Examples
- Software
- Scala Developers
Re: Compiler optimisations/inlining
Thu, 2009-05-21, 20:44
Thanks for the info, seems to work in Scala 2.8
However, I'm not noticing much impact (maybe 1%, but that's hard to
measure). I guess my bottlenecks are elsewhere or I've already
hand-inlined enough to make this not have much of an impact.
Also, noticed that in the generated bytecode, for
final case class Vector2f(final val x: Float, final val y: Float) {...},
x and y are inconsistently accessed with either getfield or
invokevirtual. This most likely gets optimized away by JIT, though? I'll
report a bug once I have a complete test case.
Erkki
Iulian Dragos wrote:
> On Wed, May 20, 2009 at 2:10 AM, Erkki Lindpere wrote:
>
>> Are the Scala compiler's -optimise and -Yinline options actually supposed to
>> do some inlining at the moment?
>>
>
> Yes, the @inline annotation is used to override the heuristics for
> deciding when to inline a method. Of course, if it's not safe it won't
> do it regardless of the annotation.
>
> I have tried this with numerous Scala
>
>> versions but nothing seems to get inlined. With some older versions it used
>> to even crash the compiler.
>>
>
> That's not what they were supposed to do, of course. Damn bugs.
>
> The trunk version has many bug fixes in the optimiser. The
> 'IllegalAccessError' you report is such a bug, but I cannot tell
> unless you provide us with a complete example or a ticket.
>
> Thanks,
> iulian
>
>