On Feb 21, 2011, at 3:10 PM, Charles Oliver Nutter wrote: > On Mon, Feb 21, 2011 at 7:19 AM, Christian Thalinger > <christian.thalin...@oracle.com> wrote: >>> I was dozing this afternoon and wondered if perhaps the indy recursive >>> calls are not reducing the recursive inlining count within Hotspot. >>> Perhaps it could explain why recursive calls are being inlined so >>> heavily, potentially to the exclusion of other calls? >> >> Yeah, I suspect something like that. > > Some evidence to support...I modified the benchmark to pass all > previously recursive calls through an intermediate function. Since > it's fixed-arity with no block, it should directly bind through indy > just fine. > > Perf improves by 2x! That's not enough to bring it back to the > non-ruby-inlining setup, but perhaps it demonstrates that there's an > issue with recursive inlining (for a start).
What about that? $ bin/jruby.sh --server -Xcompile.invokedynamic=true -J-XX:+UseSerialGC -J-XX:+UnlockExperimentalVMOptions -J-XX:+EnableMethodHandles -J-XX:+EnableInvokeDynamic -J-XX:MaxInlineSize=150 -J-XX:InlineSmallCode=5000 -Xcompile.invokedynamic.rubyDirect=false bench/bench_fib_recursive.rb 0.403000 0.000000 0.403000 ( 0.209000) 0.131000 0.000000 0.131000 ( 0.131000) 0.131000 0.000000 0.131000 ( 0.131000) 0.131000 0.000000 0.131000 ( 0.131000) 0.131000 0.000000 0.131000 ( 0.131000) $ bin/jruby.sh --server -Xcompile.invokedynamic=true -J-XX:+UseSerialGC -J-XX:+UnlockExperimentalVMOptions -J-XX:+EnableMethodHandles -J-XX:+EnableInvokeDynamic -J-XX:MaxInlineSize=150 -J-XX:InlineSmallCode=5000 -Xcompile.invokedynamic.rubyDirect=true bench/bench_fib_recursive.rb 0.241000 0.000000 0.241000 ( 0.189000) 0.126000 0.000000 0.126000 ( 0.126000) 0.126000 0.000000 0.126000 ( 0.126000) 0.127000 0.000000 0.127000 ( 0.127000) 0.126000 0.000000 0.126000 ( 0.126000) $ bin/jruby.sh --server -Xcompile.invokedynamic=true -J-XX:+UseSerialGC -J-XX:+UnlockExperimentalVMOptions -J-XX:+EnableMethodHandles -J-XX:+EnableInvokeDynamic -J-XX:MaxInlineSize=150 -J-XX:InlineSmallCode=5000 -Xcompile.invokedynamic.rubyDirect=false -Xcompile.invokedynamic.nativeDirect=false bench/bench_fib_recursive.rb 0.282000 0.000000 0.282000 ( 0.228000) 0.148000 0.000000 0.148000 ( 0.148000) 0.149000 0.000000 0.149000 ( 0.149000) 0.148000 0.000000 0.148000 ( 0.148000) 0.149000 0.000000 0.149000 ( 0.149000) $ bin/jruby.sh --server -Xcompile.invokedynamic=true -J-XX:+UseSerialGC -J-XX:+UnlockExperimentalVMOptions -J-XX:+EnableMethodHandles -J-XX:+EnableInvokeDynamic -J-XX:MaxInlineSize=150 -J-XX:InlineSmallCode=5000 -Xcompile.invokedynamic.rubyDirect=true -Xcompile.invokedynamic.nativeDirect=true bench/bench_fib_recursive.rb 0.243000 0.000000 0.243000 ( 0.190000) 0.128000 0.000000 0.128000 ( 0.128000) 0.127000 0.000000 0.127000 ( 0.127000) 0.127000 0.000000 0.127000 ( 0.127000) 0.127000 0.000000 0.127000 ( 0.127000) _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev