RFR: 8299414: JVMTI FollowReferences should support references from VirtualThread stack [v13]

Alex Menkov amenkov at openjdk.org
Thu May 4 21:35:17 UTC 2023


> 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


More information about the hotspot-dev mailing list