Code Review for 7174928

Prepared by:twisti on Tue Jun 12 14:59:12 PDT 2012
Workspace:/home/twisti/hsx/hotspot-comp/7174928
Compare against: ssh://hg.openjdk.java.net/hsx/hotspot-comp-gate/hotspot
Summary of changes: 43 lines changed: 15 ins; 8 del; 20 mod; 13327 unchg
Patch of changes: 7174928.patch
Printable review: 7174928.pdf
Author comments:
7174928: JSR 292: unresolved invokedynamic call sites deopt and osr infinitely
Reviewed-by:

While testing a new flag I want to introduce (TraceOSR) I noticed that
unresolved invokedynamic call sites compiled in C1 deoptimize and OSR
infinitely. The reason for that is we deoptimize but we don't have machinery
in C1 to tell to throw the method out and recompile it. So we just enter the
same method again and hit the same unresolved call site.

The fix is to conditionally jump to the deopt stub in generated code if the
CallSite object is null. Handling it this way it is not required to
recompile the code.

Tested with JRuby's bench_red_black.rb

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

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp

4 lines changed: 0 ins; 0 del; 4 mod; 1225 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/c1_LIRAssembler_x86.cpp

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

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/c1_LIRGenerator_x86.cpp

4 lines changed: 0 ins; 0 del; 4 mod; 1372 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/c1/c1_LIRGenerator.cpp

20 lines changed: 6 ins; 8 del; 6 mod; 3243 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/interpreter/interpreterRuntime.cpp

8 lines changed: 8 ins; 0 del; 0 mod; 1262 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/oops/methodOop.cpp

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

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/oops/methodOop.hpp

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

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