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

Reply via email to