On Tue, 24 Feb 2026 19:28:51 GMT, Serguei Spitsyn <[email protected]> wrote:

>> The `interp-only` mechanism is based on the `JavaThread` objects. Carrier 
>> and virtual threads can temporary share the same `JavaThread`. The 
>> `java_thread->jvmti_thread_state()` is re-linked to a virtual thread at 
>> `mount` and to the carrier thread at `unmount`. The `JvmtiThreadState` has a 
>> back link to the `JavaThread` which is also set for virtual thread at a 
>> `mount` and carrier thread at an `unmount`. Just one of these two links at 
>> the same time is set to the `JavaThread`, the other one has to be set to 
>> `nullptr`. The `interp-only` mechanism needs this invariant.
>> However, there is a corner case when this invariant is broken. It happens 
>> when the `JvmtiThreadState` for carrier thread has just been created. In 
>> such case, the link to `JavaThread` is always `non-nullptr` even though a 
>> virtual thread is currently mounted on a carrier thread. This simple update 
>> fixes the issue in the  `JvmtiThreadState` ctor.
>> 
>> Also, this update the includes the `interp_only` implementation 
>> simplifications and more asserts are added to relevant places. One of the 
>> simplification is a removal of the field `JvmtiThreadState::_thread_saved`.
>> 
>> Testing:
>>  - TBD: Mach5 tiers 1-6
>
> Serguei Spitsyn has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   review: convert a couple of sanity checks into asserts

src/hotspot/share/prims/jvmtiEventController.cpp line 381:

> 379:   if (target == nullptr ||                                               
>           // an unmounted virtual thread
> 380:       JvmtiEnvBase::is_thread_carrying_vthread(target, 
> state->get_thread_oop())) { // a vthread carrying thread
> 381:     return;  // EnterInterpOnlyModeClosure will be executed right after 
> mount.

The condition is not clear to me. How we do the deoptimization for mounted 
vthread?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29436#discussion_r2855608966

Reply via email to