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).