On Wed, 3 May 2023 22:02:30 GMT, Alex Menkov <amen...@openjdk.org> 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 one additional > commit since the last revision: > > feedback src/hotspot/share/prims/jvmtiTagMap.cpp line 2231: > 2229: > 2230: // Helper class to collect/report stack roots. > 2231: class StackRootCollector { We discussed privately about the following renamings: - `StackRootCollector` => `StackRefCollector` - `collect_stack_roots` => `collect_stack_refs` - `collect_vthread_stack_roots` => `collect_vthread_stack_refs` src/hotspot/share/prims/jvmtiTagMap.cpp line 2284: > 2282: for (int index = 0; index < values->size(); index++) { > 2283: if (values->at(index)->type() == T_OBJECT) { > 2284: oop o = values->obj_at(index)(); I'd suggest to get rid of one-letter identifier like `o` and `c`. They variables can be renamed to `obj` and `cont` instead. It'd better to rename `slot_offset` to `offset`. src/hotspot/share/prims/jvmtiTagMap.cpp line 2893: > 2891: HandleMark hm(current_thread); > 2892: > 2893: StackChunkFrameStream<ChunkFrames::Mixed> fs(chunk); There are ways to avoid using the `StackChunkFrameStream`. You can find good examples in the jvmtiEnvBase.cpp. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/13254#discussion_r1184469330 PR Review Comment: https://git.openjdk.org/jdk/pull/13254#discussion_r1184466352 PR Review Comment: https://git.openjdk.org/jdk/pull/13254#discussion_r1184470111