Integrated: 8293613: need to properly handle and hide tmp VTMS transitions
Serguei Spitsyn
sspitsyn at openjdk.org
Wed Sep 28 04:48:14 UTC 2022
On Sun, 18 Sep 2022 09:13:11 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:
> There are several places in VirtualThread class implementation where virtual threads are being mounted or unmounted, so there is a transition of the JavaThread identity from carrier thread to virtual thread and back. The execution state in such transitions is inconsistent, and so, has to be invisible to JVM TI agents. Such transitions are named as VTMS (virtual thread mount state) transitions, and there is a JVM TI mechanism which supports them. Besides normal VTMS transitions there are also a couple of performance-critical contexts (in `VirtualThread` methods: `scheduleUnpark()`, `cancel()` and `unpark()`) which can be named as temporary VTMS transitions. Execution state of such temporary VTMS transitions has to be also invisible to the JVM TI agent which is implemented in the current update.
>
> There are a couple of details of this fix to highlight:
> - A JavaThread which is in temporary VTMS transition is marked with a special bit `_is_in_tmp_VTMS_transition`. It is done with the native notification method `toggleJvmtiTmpVTMSTrans()`.
> - A couple of lambda form classes can be created in context of temporary VTMS transitions, so their `ClassLoad`, `ClassPrepare` and `CFLH` events are ignored.
> - Suspending threads in temporary transition is allowed.
>
> The fix was tested in Loom repository by using `JTREG_MAIN_WRAPPER=Virtual` mode of execution which forces all main threads to be run as virtual. All `JVM TI` and `JDI` tests were run on all platforms. It includes `Kitchensink` and `JCK` tests. Additionally, the fix was tested in the jdk 20 repository. It includes `JVM TI` and `JDI` tests and tiers 1-6.
This pull request has now been integrated.
Changeset: 79ccc791
Author: Serguei Spitsyn <sspitsyn at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/79ccc791f275be7cfea95ff0ce8cf7361c7f08ad
Stats: 148 lines in 10 files changed: 80 ins; 3 del; 65 mod
8293613: need to properly handle and hide tmp VTMS transitions
Reviewed-by: cjplummer, lmesnik
-------------
PR: https://git.openjdk.org/jdk/pull/10321
More information about the hotspot-dev
mailing list