RFR: 7124710: interleaved RedefineClasses() and RetransformClasses() calls may have a problem [v3]
Daniel D. Daugherty
dcubed at openjdk.org
Fri Oct 7 15:20:28 UTC 2022
On Mon, 12 Sep 2022 20:23:09 GMT, Alex Menkov <amenkov at openjdk.org> wrote:
>> test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefineRetransform/RedefineRetransform.java line 240:
>>
>>> 238: case 5:
>>> 239: test("Redefine-Retransform-Redefine-Retransform with CFLH", () -> {
>>> 240: redefine(1, 5); // CFLH sets cached class bytes to ver 1
>>
>> I'm having trouble understanding why the CFLH version is '5' here.
>> Update: I _think_ this is just to have the CFLH return a different version
>> of the class bytes before the RedefineClasses() call does its work. I
>> don't understand why you want to do this...
>
> Test cases 1-4 are from the bug description.
> I added test cases 5 & 6 to verify additional code paths - they are the same as 3 & 4, but in RedefineClasses we provide new class bytes in CFLH.
> I.e. in cases 3 and 4 after RedefineClasses classes have no cached bytes and class bytes are reconstituted in the subsequent Retransform;
> In case 5 and 6 cache_bytes buffer is created during RedefineClasses, RetransformClasses use existing cache.
Thanks for the explanation.
>> test/hotspot/jtreg/serviceability/jvmti/RedefineClasses/RedefineRetransform/libRedefineRetransform.cpp line 48:
>>
>>> 46: }
>>> 47:
>>> 48: class ClassFileLoadHookHelper {
>>
>> A short comment describing the purpose of the `ClassFileLoadHookHelper` would
>> be helpful to folks that only have a high level understanding of RedefineClasses()
>> and RetransformClasses().
>>
>> You did a very good job encapsulating support for a complicated sets of APIs
>> into this helper.
>
> Added short description
Thanks.
-------------
PR: https://git.openjdk.org/jdk/pull/10032
More information about the hotspot-dev
mailing list