Prepared by: | never on Wed May 11 13:35:59 PDT 2011 |
---|---|
Workspace: | /net/smite.us.oracle.com/export/ws/deopt |
Compare against: | /net/smite.us.oracle.com/export/ws/baseline |
Summary of changes: | 230 lines changed: 89 ins; 93 del; 48 mod; 18366 unchg |
Patch of changes: | 7043461.patch |
Author comments: |
7043461: VM crashes in void LinkResolver::runtime_resolve_virtual_method Reviewed-by: The original fix for 7009361, JSR 292 Invalid value on stack on solaris-sparc with -Xcomp, has had a bunch of fallout with several follow on fixes. I'm abandoning the original fix as there are issues with how popframe works that I can't easily resolve. I had originally considered a fix that passed the callers notion of the number of parameters down the call chain down to layout activation so the correct top of stack could be computed but the other fix seemed more straightforward and appeared to work ok initially. I've now gone back to that fix. So I anti-delta'ed the original fix in templateInterpreter_sparc.cpp and passed the callers parameters count around to all the places it's needed. This required touching a lot of shared code to pass it through. Each platform had it's own copy of the size_activation wrapper and moved that into shared code. x86 doesn't have to fix use the new value since they don't attempt to place the locals next to the caller stack. The fix now has no effect on how deopt works except in the case where an invokedynamic is on the stack. Tested with all failing test cases from 7009361, 7043461, 7042052, and 7043473. I'm currently running the larger suites that those failing tests were part of to ensure there aren't other issues. |
Bug id: | 7043461 VM crashes in void LinkResolver::runtime_resolve_virtual_method |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/interpreter/abstractInterpreter.hpp
22 lines changed: 13 ins; 0 del; 9 mod; 287 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/deoptimization.hpp
6 lines changed: 6 ins; 0 del; 0 mod; 361 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/deoptimization.cpp
57 lines changed: 31 ins; 22 del; 4 mod; 1923 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/vframeArray.hpp
6 lines changed: 3 ins; 0 del; 3 mod; 211 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/vframeArray.cpp
10 lines changed: 6 ins; 0 del; 4 mod; 596 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/frame.cpp
16 lines changed: 13 ins; 0 del; 3 mod; 1475 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/cppInterpreter_sparc.cpp
1 line changed: 1 ins; 0 del; 0 mod; 2288 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/interpreter_sparc.cpp
19 lines changed: 0 ins; 19 del; 0 mod; 444 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/templateInterpreter_sparc.cpp
28 lines changed: 12 ins; 0 del; 16 mod; 2083 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/cppInterpreter_x86.cpp
10 lines changed: 1 ins; 0 del; 9 mod; 2446 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/interpreter_x86_32.cpp
20 lines changed: 0 ins; 20 del; 0 mod; 259 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/interpreter_x86_64.cpp
14 lines changed: 0 ins; 14 del; 0 mod; 379 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/templateInterpreter_x86_32.cpp
1 line changed: 1 ins; 0 del; 0 mod; 1962 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/templateInterpreter_x86_64.cpp
1 line changed: 1 ins; 0 del; 0 mod; 2001 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/zero/vm/cppInterpreter_zero.cpp
1 line changed: 1 ins; 0 del; 0 mod; 1564 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/zero/vm/interpreter_zero.cpp
18 lines changed: 0 ins; 18 del; 0 mod; 87 unchg
This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).