JRuby invokedynamic updates

Charles Oliver Nutter headius at headius.com
Fri Aug 12 17:29:57 PDT 2011


On Fri, Aug 12, 2011 at 4:44 AM, Christian Thalinger
<christian.thalinger at oracle.com> wrote:
> Well, it's the good old:
>
>  @ 95   java.lang.invoke.MethodHandle::invokeExact (45 bytes)   size > DesiredMethodLimit
>
> This seems to be the last recursive call that doesn't get inlined.  Setting MaxRecursiveInlineLevel=0 makes it go faster.  I finally filed (a separate bug to keep this a single change):
>
> 7078382: JSR 292: don't count method handle adapters against inlining budgets
>
> The proposed fix is:
>
> http://cr.openjdk.java.net/~twisti/7078382/
>
> The numbers are now like they should be:

That's great! I have confirmed the perf improvement here as well.

The new numbers are looking *much* better now. There's still a bit of
overhead from factoring the original fib into more methods, but it's
getting smaller :)

normal fib
9227465
  1.153000   0.000000   1.153000 (  1.153000)
fib with constants
9227465
  2.167000   0.000000   2.167000 (  2.167000)
fib with additional calls
9227465
  1.275000   0.000000   1.275000 (  1.275000)
fib with constants and additional calls
9227465
  2.442000   0.000000   2.442000 (  2.442000)

Compare to non-indy:

normal fib
9227465
  1.995000   0.000000   1.995000 (  1.995000)
fib with constants
9227465
  3.637000   0.000000   3.637000 (  3.637000)
fib with additional calls
9227465
  3.279000   0.000000   3.279000 (  3.279000)
fib with constants and additional calls
9227465
  4.352000   0.000000   4.352000 (  4.352000)

I will proceed with more indy updates!

- Charlie


More information about the mlvm-dev mailing list