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