On Wed, 1 Nov 2023 18:44:04 GMT, Serguei Spitsyn <sspit...@openjdk.org> wrote:

> The handshakes support for virtual threads is needed to simplify the JVMTI 
> implementation for virtual threads. There is a significant duplication in the 
> JVMTI code to differentiate code intended to support platform, virtual 
> threads or both. The handshakes are unified, so it is enough to define just 
> one handshake for both platform and virtual thread.
> At the low level, the JVMTI code supporting platform and virtual threads 
> still can be different.
> This implementation is based on the `JvmtiVTMSTransitionDisabler` class.
> 
> The internal API includes two new classes:
>   - `JvmtiHandshake` and `JvmtiUnifiedHandshakeClosure`
>   
>   The `JvmtiUnifiedHandshakeClosure` defines two different callback 
> functions: `do_thread()` and `do_vthread()`.
> 
> The first JVMTI functions are picked first to be converted to use the 
> `JvmtiHandshake`:
>  - `GetStackTrace`, `GetFrameCount`, `GetFrameLocation`, `NotifyFramePop`
> 
> To get the test results clean, the update also fixes the test issue:
> [8318631](https://bugs.openjdk.org/browse/JDK-8318631): 
> GetStackTraceSuspendedStressTest.java failed with "check_jvmti_status: JVMTI 
> function returned error: JVMTI_ERROR_THREAD_NOT_ALIVE (15)" 
> 
> Testing:
>  - the mach5 tiers 1-6 are all passed

This pull request has now been integrated.

Changeset: 839dd653
Author:    Serguei Spitsyn <sspit...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/839dd653663867f770fbe4af0a57468675eb12db
Stats:     498 lines in 4 files changed: 138 ins; 334 del; 26 mod

8319244: implement JVMTI handshakes support for virtual threads

Reviewed-by: pchilanomate, amenkov

-------------

PR: https://git.openjdk.org/jdk/pull/16460

Reply via email to