On Fri, 5 May 2023 23:03:38 GMT, Alex Menkov <[email protected]> wrote:
>> The fix updates JVMTI FollowReferences implementation to report references
>> from virtual threads:
>> - unmounted vthreads are detected, their stack references for
>> JVMTI_HEAP_REFERENCE_STACK_LOCAL/JVMTI_HEAP_REFERENCE_JNI_LOCAL;
>> - stacks of mounted vthreads are splitted into 2 parts (virtual thread stack
>> and carrier thread stack), references are reported with correct thread
>> id/class tag/object tags/frame depth;
>> - common code to handle stack frames are moved into separate class;
>>
>> Threads are reported as:
>> - platform threads: JVMTI_HEAP_REFERENCE_THREAD (as before);
>> - mounted vthreads (synthetic references, consider them as heap roots
>> because carrier threads are roots): JVMTI_HEAP_REFERENCE_OTHER;
>> - unmounted vthreads: not reported as heap roots.
>
> Alex Menkov has updated the pull request incrementally with three additional
> commits since the last revision:
>
> - cosmetic changes in libVThreadStackRefTest.cpp
> - collect VT stack references if initial_object is null
> - moved transition disabler to correct functions
test/hotspot/jtreg/serviceability/jvmti/vthread/FollowReferences/libVThreadStackRefTest.cpp
line 140:
> 138: LOG("JVMTI FollowReferences error: %d\n", err);
> 139: env->FatalError("FollowReferences failed");
> 140: }
Nit: `classesCount` and `heapCallBacks` need c-style names.
test/hotspot/jtreg/serviceability/jvmti/vthread/FollowReferences/libVThreadStackRefTest.cpp
line 153:
> 151: }
> 152:
> 153: static void printCreatedClass(JNIEnv* env, jclass cls) {
Nit: This function should have a c-style name.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13254#discussion_r1186668539
PR Review Comment: https://git.openjdk.org/jdk/pull/13254#discussion_r1186668689