JDK-6994630 : java/lang/instrument/IsModifiableClassAgent.java fails with -XX:+EnableInvokeDynamic
Type:Bug
Component:hotspot
Sub-Component:compiler
Affected Version:hs20
Priority:P4
Status:Closed
Resolution:Fixed
OS:generic
CPU:generic
Submitted:2010-10-25
Updated:2012-02-01
Resolved:2011-03-08
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.
SUGGESTED FIX
The fix is to also check for the field with the already changed signature.
*** (#1 of 1): [ UNSAVED ] ###@###.###
27-10-2010
EVALUATION
There is a problem with the logic of ClassFileParser::java_dyn_MethodHandle_fix_pre. The method searches for a field called "vmentry" with the signature "byte". The signature of the field is then changed to vmSymbols::machine_word_signature() to hold an unmanged pointer.
When the method is called again the field's signature is already changed and it throws a VirtualMachineError resulting in a VerifyError.