review for 7050554: JSR 292 - need optimization for selectAlternative
Tom Rodriguez
tom.rodriguez at oracle.com
Wed Jun 1 14:38:40 PDT 2011
http://cr.openjdk.java.net/~never/7050554
130 lines changed: 74 ins; 20 del; 36 mod; 4493 unchg
7050554: JSR 292 - need optimization for selectAlternative
Reviewed-by:
JSR 292 provides a GuardWithTest idiom is allow selection between two
different method handles based on a boolean test. In earlier versions
of the JDK code this was done with a bunch of little wrapper methods
for different arities. This resulted in a call site for a each call
which allowed existing constant folding code to statically bind the
call sites. Because this didn't scale it was replaced with a new
idiom that looks more like (test ? a : b).invoke() which only have a
single call site. This interferes with inlining making the code
perform terribly. We need a new bimorhphic inline for invokedynamic
callsites to deal with this. Without it performance of invokedynamic
for things like jruby is pretty terrible. Tested with regression
tests and jruby tests.
I also fixed a problem in the shared print compilation code where
attempting to print zombie for an unloaded nmethod causes a segv
because the method is NULL.
More information about the hotspot-compiler-dev
mailing list