On Fri, May 20, 2011 at 1:07 AM, Ola Bini <ola.b...@gmail.com> wrote: >> Try -XX:+UnlockDiag* -XX:-UseRicochetFrames for differential testing. >> >> If you can find a microbenchmark which shows differential slowdown, we can >> debug it. > > When trying the above all my tests fail with this: > java.lang.RuntimeException: java.lang.InternalError: NYI
Same here. Reproducing it is pretty easy... * Clone JRuby: git clone https://github.com/jruby/jruby.git * Build JRuby: cd jruby ; ant * Run benchmarks: bin/jruby bench/bench_fib_recursive.rb 10 35 There are many benchmarks under the bench dir, almost all of which show this degradation. You can disable invokedynamic use in JRuby by passing -Xcompile.invokedynamic=false, as seen here: ~/projects/jruby ➔ jruby -Xcompile.invokedynamic=false bench/bench_fib_recursive.rb 5 35 WARNING: Both jruby-complete.jar and jruby.jar are present in the 'lib' directory. Will use jruby.jar 9227465 1.698000 0.000000 1.698000 ( 1.645000) 9227465 1.352000 0.000000 1.352000 ( 1.352000) 9227465 1.364000 0.000000 1.364000 ( 1.364000) 9227465 1.344000 0.000000 1.344000 ( 1.344000) 9227465 1.336000 0.000000 1.336000 ( 1.336000) ~/projects/jruby ➔ jruby -Xcompile.invokedynamic=true bench/bench_fib_recursive.rb 5 35 WARNING: Both jruby-complete.jar and jruby.jar are present in the 'lib' directory. Will use jruby.jar 9227465 3.182000 0.000000 3.182000 ( 3.120000) 9227465 3.019000 0.000000 3.019000 ( 3.019000) 9227465 3.195000 0.000000 3.195000 ( 3.195000) 9227465 3.163000 0.000000 3.163000 ( 3.163000) 9227465 3.656000 0.000000 3.656000 ( 3.656000) I'm sure something's just broken...this benchmark was easily almost 2x faster than the non-invokedynamic version just a few days ago, and it's now 2-3x slower than non-indy logic. I'm going to be online all day, standing by to help in any way I can. I did do a quick LogCompilation last night and the main thing I noticed was that while it seemed like handles are inlining, the eventual DMH does not inline. That would explain some of the perf degradation, I think...but hopefully not all of it. Whatever you need me to run or whatever information...let me know. ALSO...I got the same error as Ola when running JRuby with a standalone jar file: ~/projects/jruby ➔ java -jar lib/jruby-complete.jar bench/bench_fib_recursive.rb MethodHandle.java:-1:in `invokeExact': java.lang.NoClassDefFoundError: org/jruby/runtime/ThreadContext from MethodHandle.java:-1:in `invokeExact' from bench/bench_fib_recursive.rb:7:in `method__0$RUBY$fib_ruby' from bench/bench_fib_recursive.rb:7:in `method__0$RUBY$fib_ruby' from bench/bench_fib_recursive.rb:7:in `method__0$RUBY$fib_ruby' from bench/bench_fib_recursive.rb:7:in `method__0$RUBY$fib_ruby' As in Ola's case, ThreadContext is a core JRuby class. I do *not* get this error when JRuby is loaded from the bootstrap classloader, so I imagine there's some mix-up with generated bytecode and the classloaders that that bytecode gets loaded into. - Charlie _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev