[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-serviceability-dev
Subject: Integrated: 8293613: need to properly handle and hide tmp VTMS transitions
From: Serguei Spitsyn <sspitsyn () openjdk ! org>
Date: 2022-09-28 4:48:14
Message-ID: wGfmfhcTX-JbA_U4i8ZDuBFTaoeae56nYGPOnRv1dOI=.515c8ce1-99bf-4006-8f4d-d8c396aaaa33 () github ! com
[Download RAW message or body]
On Sun, 18 Sep 2022 09:13:11 GMT, Serguei Spitsyn <sspitsyn@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@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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic