On Wed, 30 Aug 2023 13:56:42 GMT, Alan Bateman <al...@openjdk.org> wrote:
> In the virtual thread implementation, thread identity switches to the carrier > before freezing and switches back to the virtual thread after thawing. This > was a forced move due to issues getting JVMTI to work with virtual threads. > JVMTI can now hide events during transitions so we can invert the sequence > back to mounting before running the continuation, unmounting after freezing, > and re-mounting after thawing. This sequence is important for future changes > that will initiate the freezing from the VM. > > The change requires an update to the JFR thread sampler to skip sampling when > it samples during a transition. > > Testing: tier1-5 src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp line 410: > 408: } > 409: if (JAVA_SAMPLE == type) { > 410: if (thread_state_in_java(thread) && > !is_vthread_in_transition(thread)) { I think this check can be postponed until after the thread is suspended. src/hotspot/share/jfr/periodic/sampling/jfrThreadSampler.cpp line 415: > 413: } else { > 414: assert(NATIVE_SAMPLE == type, "invariant"); > 415: if (thread_state_in_native(thread) && > !is_vthread_in_transition(thread)) { Is this possible? I assume the thread is in _thread_in_Java during the transition? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/15492#discussion_r1311439052 PR Review Comment: https://git.openjdk.org/jdk/pull/15492#discussion_r1311437865