RFR (S) 8181171: Deleting method for RedefineClasses breaks ResolvedMethodName

David Holmes david.holmes at oracle.com
Mon Feb 25 01:04:52 UTC 2019


Hi Coleen,

On 23/02/2019 9:36 am, coleen.phillimore at oracle.com wrote:
> 8210457: JVM crash in ResolvedMethodTable::add_method(Handle)
> Summary: Add a function to call NSME in ResolvedMethodTable to replace 
> deleted methods.

Given the existing code just seems to say "I don't know what to do 
here", this change seems quite reasonable.

A few minor style nits in test/jdk/java/lang/instrument/NamedBuffer.java:

+         final byte FirstByte = className.getBytes()[0];

No need for final

s/First/first/

+             if(checkMatch

Space after if

Also could you add a comment on bytesForHostClass explaining exactly 
what it does please. I have to keep re-reading it to figure out what is 
the name of the actual classfile on disk and how it then gets 
transformed. IIUC given className it replaces the first letter with 
"replace" and reads that classfile from disk, and then iterates through 
the bytes looking for the modified name and updating it to be 
"className" (which just requires changing the first byte).

Thanks,
David
-----

> This Unsafe.throwX trick is also used for vtable initialization for 
> throwing IllegalAccessError.  Tested with redefinition tests in the 
> repository and tier1-3, and added tests.
> 
> open webrev at http://cr.openjdk.java.net/~coleenp/2019/8181171.01/webrev
> bug link https://bugs.openjdk.java.net/browse/JDK-8181171
> 
> Thanks,
> Coleen


More information about the serviceability-dev mailing list