Code Review for 7052219

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