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