Code Review for 7050554

Prepared by:never on Wed Jun 1 14:37:23 PDT 2011
Workspace:/export/ws/bim
Compare against: ssh://hg.openjdk.java.net/hsx/hotspot-comp-gate/hotspot
Summary of changes: 130 lines changed: 74 ins; 20 del; 36 mod; 4493 unchg
Patch of changes: 7050554.patch
Author comments:
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.

Bug id: Bug Database
Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/ci/ciCallProfile.hpp

4 lines changed: 1 ins; 0 del; 3 mod; 80 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/ci/ciMethodHandle.hpp

4 lines changed: 0 ins; 1 del; 3 mod; 66 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/ci/ciMethodHandle.cpp

1 line changed: 0 ins; 0 del; 1 mod; 85 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/callGenerator.hpp

2 lines changed: 2 ins; 0 del; 0 mod; 305 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/callGenerator.cpp

77 lines changed: 55 ins; 3 del; 19 mod; 1001 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/opto/doCall.cpp

19 lines changed: 0 ins; 15 del; 4 mod; 945 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/compiler/compileBroker.cpp

23 lines changed: 16 ins; 1 del; 6 mod; 2011 unchg

This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).