> 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 with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 20 additional commits since the last revision: - Merge branch 'openjdk:master' into vthread_follow_ref - indent - jvmtiTagMap refactoring - feedback - Added "no continuations" test case - mounted VTs reported as OTHER, unmounted VTs are not reported as roots - Fixed indent in collect_vthread_stack_roots - removed full heap scan. unmounted VT are not considered roots and reported only from references - Use atomic for synchronization - trailing spaces - ... and 10 more: https://git.openjdk.org/jdk/compare/463afe09...1d01ff11 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/13254/files - new: https://git.openjdk.org/jdk/pull/13254/files/0989d0b8..1d01ff11 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=13254&range=12 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=13254&range=11-12 Stats: 320341 lines in 3169 files changed: 273731 ins; 26090 del; 20520 mod Patch: https://git.openjdk.org/jdk/pull/13254.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/13254/head:pull/13254 PR: https://git.openjdk.org/jdk/pull/13254