Prepared by: | never on Tue May 17 16:00:43 PDT 2011 |
---|---|
Workspace: | /net/smite.us.oracle.com/export/ws/indy |
Compare against: | ssh://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot |
Summary of changes: | 335 lines changed: 277 ins; 8 del; 50 mod; 21338 unchg |
Patch of changes: | 7045513.patch |
Author comments: |
7045513: JSR 292 inlining causes crashes in methodHandleWalk.cpp Reviewed-by: Several issues with the MethodHandleWalk code were identified with jruby and a stress mode was added that exposed quite a few more. Method handles with void returns weren't being handled properly with spreading. Constant ArgTokens weren't being handled in several places. ArgToken didn't have enough asserts to guard against improper use to handle could be mistakenly used as a local index. make_fetch which was used by argument spreading wasn't implemented. Several of the bytecodes didn't handle their proper u2 or u4 ranges. make_invoke didn't sanity check the number of arguments passed. Dispatch through invokeinterface was unimplemented. tail_call make_invokes didn't push the result on the stack resulting in the max_stack on the method being wrong. Currently I'm swallowing any exceptions thrown by the stress logic but eventually those will need to be clean. Tested with the java/lang/invoke regression tests with StressMethodHandles turned on plus the failing jruby tests. I fixed some ifdefs so that the optimized build works again. I also added the richochet blob to the SA so that it can walk the code cache. I had to add the AdapterBlobs as well. |
Bug id: | Bug Database |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/globals.hpp
3 lines changed: 3 ins; 0 del; 0 mod; 3831 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciMethodHandle.cpp
1 line changed: 0 ins; 0 del; 1 mod; 85 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandleWalk.cpp
110 lines changed: 81 ins; 4 del; 25 mod; 1521 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandleWalk.hpp
23 lines changed: 8 ins; 1 del; 14 mod; 430 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/prims/methodHandles.cpp
54 lines changed: 50 ins; 2 del; 2 mod; 3006 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/interpreter/bytecodeTracer.cpp
8 lines changed: 3 ins; 0 del; 5 mod; 575 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/cpu/x86/vm/methodHandles_x86.cpp
1 line changed: 0 ins; 0 del; 1 mod; 2404 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/idealGraphPrinter.cpp
2 lines changed: 2 ins; 0 del; 0 mod; 753 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/thread.cpp
3 lines changed: 2 ins; 1 del; 0 mod; 4339 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/runtime/vmStructs.cpp
6 lines changed: 5 ins; 0 del; 1 mod; 2502 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java
6 lines changed: 5 ins; 0 del; 1 mod; 1467 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
agent/src/share/classes/sun/jvm/hotspot/code/CodeBlob.java
2 lines changed: 2 ins; 0 del; 0 mod; 221 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java
2 lines changed: 2 ins; 0 del; 0 mod; 204 unchg
------ ------ ------
------
---
New
Patch
Raw
agent/src/share/classes/sun/jvm/hotspot/code/AdapterBlob.java
58 lines changed: 58 ins; 0 del; 0 mod; 0 unchg
------ ------ ------
------
---
New
Patch
Raw
agent/src/share/classes/sun/jvm/hotspot/code/RicochetBlob.java
56 lines changed: 56 ins; 0 del; 0 mod; 0 unchg
This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).