JDK-7047961 : JSR 292 MethodHandleWalk swap args doesn't handle T_LONG and T_DOUBLE properly
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs21
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: x86
  • Submitted: 2011-05-24
  • Updated: 2012-12-05
  • Resolved: 2011-06-04
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8 Other
7Fixed 8Fixed hs21Fixed
More stress testing with MethodHandleWalk uncovered a few new issues, in particular swap wasn't handling double word arguments properly which corrupted the argument list.

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/88559690c95a

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/rev/5ac411b3b8fc

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/88559690c95a

EVALUATION 7047961: JSR 292 MethodHandleWalk swap args doesn't handle T_LONG and T_DOUBLE properly Reviewed-by: kvn, jrose Several more errors were found with handling op arguments in MethodHandleWalk. swap wasn't dealing with the double word arguments properly. collect and fold are allowed to have 0 length operations. rotate was using the wrong type to determine the size of the operation. boxing operations are allowed on subword types. nop conversion operations should just do nothing. I also removed the SlotState wrapper since its only purpose seemed to be to keep track of the arg types when symbolic was used and I modified tt_symbolic to keep accurate track of the type instead of claiming to be a long. I also added more detail to most of the failure messages and fixed a missing ResourceMark along with adding a lot more sanity checks. Tested with vm/mlvm and java/lang/invoke regression tests.

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/5ac411b3b8fc