I'm working up a set of files that show JRuby compilation output, but
I noticed a couple things that might be interesting right now.

First off, fairly early in the assembly output for fib, I see this:

  0x02876d1f: call      0x0282d0e0      ; OopMap{[96]=Oop [100]=Oop
[28]=Oop [40]=Oop [48]=Oop off=644}
                                        ;*invokespecial invokeExact
                                        ; -
java.lang.invoke.MethodHandle::invokeExact@63
                                        ; -
java.lang.invoke.MethodHandle::invokeExact@23
                                        ; -
bench.bench_fib_recursive::method__0$RUBY$fib_ruby@51 (line 7)
                                        ;   {optimized virtual_call}

For fib, the only invokedynamic is the recursive call to fib, so that
would indicate that fib_ruby is not inlining into itself at all here.
And I can't see it inlining into itself anywhere in the assembly
output.

Later in the same output:

  0x0287703f: call      0x0282dba0      ; OopMap{ebp=Oop off=1444}
                                        ;*checkcast
                                        ; -
java.lang.invoke.MethodHandle::invokeExact@40
                                        ; -
bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
                                        ;   {runtime_call}
  0x02877044: call      0x0105a9d0      ;*checkcast
                                        ; -
java.lang.invoke.MethodHandle::invokeExact@40
                                        ; -
bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
                                        ;   {runtime_call}

These appear repeatedly near the invokedynamic invocation above. If
I'm reading this right, neither the recursive call nor logic involved
in that particular handle is inlining. Am I right?

Here's the complete assembly dump (i386) for the fib_ruby method:
https://gist.github.com/987640

In other news, MaxInlineSize=150 with InlineSmallCode=3000 does not
appear to improve performance. I also tried bumping up
MaxRecursiveInlineLevel and MaxInlineLevel with no effect.

- Charlie
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to