Code Review for 6994630

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