Prepared by: | twisti on Wed Oct 27 05:24:25 PDT 2010 |
---|---|
Workspace: | /home/twisti/hotspot-comp/6994630 |
Compare against: | /home/twisti/hotspot-comp/hotspot |
Summary of changes: | 65 lines changed: 23 ins; 31 del; 11 mod; 4737 unchg |
Patch of changes: | 6994630.patch |
Printable review: | 6994630.pdf |
Author comments: |
6994630: java/lang/instrument/IsModifiableClassAgent.java fails with -XX:+EnableInvokeDynamic Summary: The logic of ClassFileParser::java_dyn_MethodHandle_fix_pre needs to take care of an already changed vmentry signature. Reviewed-by: 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. The fix is to also check for the field with the already changed signature. Tested with the failing testcase. I also changed the type of the fields argument since we don't update the field pointer and removed a duplicated comment. |
Bug id: | 6994630 java/lang/instrument/IsModifiableClassAgent.java fails with -XX:+EnableInvokeDynamic |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Wdiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/classFileParser.cpp
63 lines changed: 23 ins; 31 del; 9 mod; 4454 unchg
Cdiffs
Udiffs
Wdiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/classfile/classFileParser.hpp
2 lines changed: 0 ins; 0 del; 2 mod; 283 unchg
This code review page was prepared using /home/twisti/bin/webrev (vers 23.18-hg-never).