On Tue, 24 Jan 2023 00:16:10 GMT, Alex Menkov <amen...@openjdk.org> wrote:

> classFileParser drops stack map frames for JDK classes (when verification is 
> not required).
> As a result JvmtiClassFileReconstituter cannot restore the attribute for 
> class redefinition.
> Note that if the class is in CDS archive, the frames are restored from CDS, 
> so this issue affects only JDK classes which are not in CDS.
> This code is old (from "initial load") and I don't understand the reason it 
> was implemented this way.
> 
> Testing: tier1-tier6

Copyright needs updating.

test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/MissedStackMapFrames/MissedStackMapFrames.java
 line 91:

> 89:         int frameCount = getStackMapFrameCount(classfileBuffer);
> 90:         log("  Has stack map frames: " + frameCount);
> 91:         if (frameCount == 0) {

Shouldn't the check also be that the number of frames is the same in the "load" 
and "retransform" cases?

test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/MissedStackMapFrames/MissedStackMapFrames.java
 line 107:

> 105:             byte[] retransformBytes = retransformBytes(i);
> 106:             checkStackMapFrames(cls + "(load)", loadBytes);
> 107:             checkStackMapFrames(cls + "(retranform)", retransformBytes);

"retransform"

-------------

Changes requested by cjplummer (Reviewer).

PR: https://git.openjdk.org/jdk/pull/12155

Reply via email to