Prepared by: | never on Tue Jun 14 10:10:09 PDT 2011 |
---|---|
Workspace: | /net/smite.us.oracle.com/export/ws/7045514 |
Compare against: | ssh://hg.openjdk.java.net/hsx/hotspot-comp-gate/hotspot |
Summary of changes: | 136 lines changed: 79 ins; 31 del; 26 mod; 14582 unchg |
Patch of changes: | 7052219.patch |
Author comments: |
7052219: JSR 292: Crash in ~BufferBlob::MethodHandles adapters Summary: Reviewed-by: There were a set of bugs on both the JDK and VM side when dealing with rotation of arguments that could cause argument shearing which resulted in a large class of failures. The mostly obvious ones were crashes from corrupted oops but it caused failures in other computations. The primary bug was inconsistent rules for how the rotate was specified when writing over a double word value but there were also issues with how the source size was accounted for. The main assembly had to be slightly adjusted to take this into account. Equivalent adjustments in the MethodHandleWalk were needed as well. I also included a minor fix to skip unneeded interface checkcasts. The verify logic was adjust to correctly complain about all these cases and there were some minor printing changes needed for debugging. Tested on x86 and sparc 32/64 with the regression tests and vm.mlvm in both product and fastdebug. All regression tests ran cleanly and the vm.mlwm tests are as clean as expected. All the product crashes we'd been seeing before are fixed, though there's still some undiagnosed issue on sparc that results in occasional crashes in one of the stress tests. |
Bug id: | 7052219 JSR 292: Crash in ~BufferBlob::MethodHandles adapters |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandles.hpp
6 lines changed: 4 ins; 0 del; 2 mod; 834 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandles.cpp
93 lines changed: 55 ins; 29 del; 9 mod; 3081 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandleWalk.cpp
17 lines changed: 9 ins; 1 del; 7 mod; 1817 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/globals.hpp
3 lines changed: 3 ins; 0 del; 0 mod; 3834 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/stubCodeGenerator.hpp
2 lines changed: 1 ins; 0 del; 1 mod; 128 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/stubCodeGenerator.cpp
3 lines changed: 1 ins; 0 del; 2 mod; 154 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/sparc/vm/methodHandles_sparc.cpp
6 lines changed: 3 ins; 0 del; 3 mod; 2330 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/methodHandles_x86.cpp
6 lines changed: 3 ins; 1 del; 2 mod; 2404 unchg
This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).