Code Review for 7055355

Prepared by:never on Thu Jun 16 10:41:40 PDT 2011
Workspace:/export/ws/7045514
Compare against: ssh://hg.openjdk.java.net/hsx/hotspot-comp-gate/hotspot
Summary of changes: 198 lines changed: 63 ins; 121 del; 14 mod; 30919 unchg
Patch of changes: 7055355.patch
Author comments:
7055355: JSR 292: crash while throwing WrongMethodTypeException
Reviewed-by: jrose, twisti, bdelsart

When throwing a WrongMethodTypeException from a MethodHandle the
existing code was pretending it was in the interpreter which worked ok
most of the time but would sometimes die when trying to throw with a
compiled caller. It could cause asserts in some contexts or result in
GC crashes. The fix is to remove the old machinery in favor of the
more standard code for throwing exceptions in
StubRoutines/SharedRuntime. There was one other use of the old throw
machinery but it's in part of check that can never fail since we won't
enable method handles unless we have a non-NULL rasie exception
method. There's an extra fix in the there to reject lookups of
clinit. It isn't critical but it allows all the JCK tests to run
without asserting. Tested with failing JCK test and jruby crasher on
sparc/x86 with client/server/d64, along with a full run of the
invokedynamic JCK tests, the JLI regression tests and the vm.mlvm
tests.

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

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/runtime/sharedRuntime.hpp

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

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/runtime/sharedRuntime.cpp

7 lines changed: 7 ins; 0 del; 0 mod; 2905 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/runtime/stubRoutines.hpp

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

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/runtime/stubRoutines.cpp

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

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

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

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

19 lines changed: 0 ins; 19 del; 0 mod; 1250 unchg

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

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

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/interpreter/templateInterpreterGenerator.hpp

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

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/share/vm/prims/methodHandles.cpp

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

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

19 lines changed: 2 ins; 10 del; 7 mod; 2319 unchg

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

17 lines changed: 16 ins; 0 del; 1 mod; 3330 unchg

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

18 lines changed: 0 ins; 18 del; 0 mod; 2093 unchg

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

21 lines changed: 0 ins; 19 del; 2 mod; 2399 unchg

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

16 lines changed: 15 ins; 0 del; 1 mod; 2352 unchg

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

18 lines changed: 17 ins; 0 del; 1 mod; 3136 unchg

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

26 lines changed: 0 ins; 26 del; 0 mod; 1937 unchg

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

25 lines changed: 0 ins; 25 del; 0 mod; 1977 unchg

Cdiffs Udiffs Sdiffs Frames Old New Patch Raw src/cpu/zero/vm/cppInterpreter_zero.cpp

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

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