On Fri, Feb 18, 2011 at 5:56 AM, Charles Oliver Nutter
<head...@headius.com> wrote:
> <head...@headius.com> wrote:
>> I did just land another revision that allows Ruby to Ruby calls
>> meeting the above criteria to bind all the way through, and
>> performance dropped precipitously:
>
> The degradation for tak is just as significant:

More information, since I can't sleep. I bumped up various thresholds
and did not see an improvement. So I fired up the trusty hsdis plugin,
and looked for "tak" and the first "call" operation I found shows that
many levels of Ruby code are indeed inlining:

  0x02886e87: call      0x0282d560      ; OopMap{[240]=Oop [248]=Oop
[252]=Oop [256]=Oop [36]=Oop [40]=Oop [68]=Oop [176]=Oop [192]=Oop
[196]=Oop [200]=Oop [204]=Oop off=2892}
                                        ;*invokestatic test
                                        ; -
java.dyn.MethodHandle::invokeExact@15
                                        ; -
sun.dyn.MethodHandleImpl$GuardWithTest::invoke_L5@11 (line 986)
                                        ; - java.dyn.MethodHandle::invokeExact@8
                                        ; -
bench.bench_tak::method__0$RUBY$tak@19 (line 2)
                                        ; -
java.dyn.MethodHandle::invokeExact@24
                                        ; -
sun.dyn.MethodHandleImpl$GuardWithTest::invoke_L7@36 (line 997)
                                        ; -
java.dyn.MethodHandle::invokeExact@12
                                        ; -
bench.bench_tak::method__0$RUBY$tak@66 (line 5)
                                        ; -
java.dyn.MethodHandle::invokeExact@24
                                        ; -
sun.dyn.MethodHandleImpl$GuardWithTest::invoke_L7@36 (line 997)
                                        ; -
java.dyn.MethodHandle::invokeExact@12
                                        ; -
bench.bench_tak::method__0$RUBY$tak@66 (line 5)
                                        ; -
java.dyn.MethodHandle::invokeExact@24
                                        ; -
sun.dyn.MethodHandleImpl$GuardWithTest::invoke_L7@36 (line 997)
                                        ; -
java.dyn.MethodHandle::invokeExact@12
                                        ; -
bench.bench_tak::method__0$RUBY$tak@66 (line 5)
                                        ; -
java.dyn.MethodHandle::invokeExact@24
                                        ; -
sun.dyn.MethodHandleImpl$GuardWithTest::invoke_L7@36 (line 997)
                                        ; -
java.dyn.MethodHandle::invokeExact@12
                                        ; -
bench.bench_tak::method__0$RUBY$tak@66 (line 5)
                                        ;   {static_call}

So...why so much slower? As far as I can see in the output, this is
the one and only "tak" emitted.

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

Reply via email to