Push invalidation + bimorphic fix

Charles Oliver Nutter headius at headius.com
Mon Aug 8 22:58:20 PDT 2011


I have set up a local build against "hsx" hotspot compiler dev branch,
thanks to Christian. I'll try to write something up with the process
tomorrow.

Anyway, I wanted to test out Tom's patch for GWT bimorphic inlining
and Christian's patch for push invalidation of mutable call sites. The
results were peculiar!

First I tried a build with no patches:

headius at headius-desktop:~/projects/jruby$
JAVA_HOME=~/hsx-hotspot/build/linux/jdk-linux-i586/ bin/jruby --server
bench/bench_fib_recursive.rb 5 35
9227465
  1.977000   0.000000   1.977000 (  1.867000)
9227465
  1.524000   0.000000   1.524000 (  1.524000)
9227465
  1.524000   0.000000   1.524000 (  1.524000)
9227465
  1.535000   0.000000   1.535000 (  1.535000)
9227465
  1.529000   0.000000   1.529000 (  1.529000)

Then with both Tom's and Christian's patches applied together:

headius at headius-desktop:~/projects/jruby$
JAVA_HOME=~/hsx-hotspot/build/linux/jdk-linux-i586/ bin/jruby --server
bench/bench_fib_recursive.rb 5 35
9227465
  1.761000   0.000000   1.761000 (  1.651000)
9227465
  1.457000   0.000000   1.457000 (  1.457000)
9227465
  1.456000   0.000000   1.456000 (  1.456000)
9227465
  1.482000   0.000000   1.482000 (  1.482000)
9227465
  1.454000   0.000000   1.454000 (  1.453000)

I like any improvements, so naturally I was happy. But Christian
expected a bigger improvement. So I tried with just Christian's patch:

headius at headius-desktop:~/projects/jruby$
JAVA_HOME=~/hsx-hotspot/build/linux/jdk-linux-i586/ bin/jruby --server
bench/bench_fib_recursive.rb 5 35
9227465
  1.665000   0.000000   1.665000 (  1.555000)
9227465
  1.270000   0.000000   1.270000 (  1.270000)
9227465
  1.268000   0.000000   1.268000 (  1.268000)
9227465
  1.292000   0.000000   1.292000 (  1.292000)
9227465
  1.259000   0.000000   1.259000 (  1.259000)

Interesting, eh?

- Charlie


More information about the mlvm-dev mailing list