Code Review for 7043461

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