Projects, which use JSR292

Christian Thalinger christian.thalinger at oracle.com
Mon Feb 21 08:08:24 PST 2011


On Feb 21, 2011, at 4:43 PM, Christian Thalinger wrote:
> I fixed that but it didn't change performance.  I just tried bench_tak and there is still a regression.  I will look at that next.


Last email for today, I promise :-)

This last fix is actually causing the regression.  The method gets to big with a recursive inlining level of 1 resulting in:

  @ 127   java.dyn.MethodHandle::invokeExact  size > DesiredMethodLimit

Setting MaxRecursiveInlineLevel=0 makes it faster.  I think we eventually need some logic to discount the bytecodes of method handle adapters and friends.

-- Christian

$ bin/jruby.sh --server -Xcompile.invokedynamic=true -J-XX:+UseSerialGC -J-XX:+UnlockExperimentalVMOptions -J-XX:+EnableMethodHandles -J-XX:+EnableInvokeDynamic -J-XX:MaxInlineLevel=15 -J-XX:MaxInlineSize=150 -J-XX:InlineSmallCode=5000 -Xcompile.invokedynamic.rubyDirect=false bench/bench_tak.rb 10
      user     system      total        real
  0.949000   0.000000   0.949000 (  0.898000)
  0.815000   0.000000   0.815000 (  0.815000)
  0.814000   0.000000   0.814000 (  0.814000)
  0.815000   0.000000   0.815000 (  0.815000)
  0.814000   0.000000   0.814000 (  0.814000)
  0.814000   0.000000   0.814000 (  0.814000)
  0.814000   0.000000   0.814000 (  0.814000)
  0.814000   0.000000   0.814000 (  0.814000)
  0.814000   0.000000   0.814000 (  0.814000)
  0.814000   0.000000   0.814000 (  0.814000)

$ bin/jruby.sh --server -Xcompile.invokedynamic=true -J-XX:+UseSerialGC -J-XX:+UnlockExperimentalVMOptions -J-XX:+EnableMethodHandles -J-XX:+EnableInvokeDynamic -J-XX:MaxInlineLevel=15 -J-XX:MaxInlineSize=150 -J-XX:InlineSmallCode=5000 -Xcompile.invokedynamic.rubyDirect=true bench/bench_tak.rb 10
      user     system      total        real
  1.343000   0.000000   1.343000 (  1.290000)
  1.081000   0.000000   1.081000 (  1.081000)
  1.087000   0.000000   1.087000 (  1.087000)
  1.086000   0.000000   1.086000 (  1.086000)
  1.085000   0.000000   1.085000 (  1.085000)
  1.088000   0.000000   1.088000 (  1.088000)
  1.086000   0.000000   1.086000 (  1.086000)
  1.084000   0.000000   1.084000 (  1.084000)
  1.086000   0.000000   1.086000 (  1.086000)
  1.088000   0.000000   1.088000 (  1.088000)

$ bin/jruby.sh --server -Xcompile.invokedynamic=true -J-XX:+UseSerialGC -J-XX:+UnlockExperimentalVMOptions -J-XX:+EnableMethodHandles -J-XX:+EnableInvokeDynamic -J-XX:MaxInlineLevel=15 -J-XX:MaxInlineSize=150 -J-XX:InlineSmallCode=5000 -Xcompile.invokedynamic.rubyDirect=true -J-XX:MaxRecursiveInlineLevel=0 bench/bench_tak.rb 10
      user     system      total        real
  0.832000   0.000000   0.832000 (  0.779000)
  0.714000   0.000000   0.714000 (  0.714000)
  0.713000   0.000000   0.713000 (  0.713000)
  0.713000   0.000000   0.713000 (  0.713000)
  0.714000   0.000000   0.714000 (  0.714000)
  0.713000   0.000000   0.713000 (  0.713000)
  0.713000   0.000000   0.713000 (  0.713000)
  0.715000   0.000000   0.715000 (  0.715000)
  0.713000   0.000000   0.713000 (  0.713000)
  0.713000   0.000000   0.713000 (  0.713000)



More information about the mlvm-dev mailing list