> 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

Serguei Spitsyn has updated the pull request incrementally with one additional 
commit since the last revision:

  review: added AdapterClosure to get rid of duplication

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/16460/files
  - new: https://git.openjdk.org/jdk/pull/16460/files/e61d0703..fefeb7f1

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=16460&range=08
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16460&range=07-08

  Stats: 47 lines in 2 files changed: 20 ins; 22 del; 5 mod
  Patch: https://git.openjdk.org/jdk/pull/16460.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16460/head:pull/16460

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

Reply via email to