On Sat, 24 Dec 2022 04:14:07 GMT, Serguei Spitsyn <sspit...@openjdk.org> wrote:

>> Now the `JvmtiVTMSTransitionDisabler` mechanism supports disabling VTMS 
>> transitions for all virtual threads only. It should also support disabling 
>> transitions for any specific virtual thread as well. This will improve 
>> scalability of the JVMTI functions operating on target virtual threads as 
>> the functions can be executed concurrently without blocking each other 
>> execution when target virtual threads are different.
>> New constructor `JvmtiVTMSTransitionDisabler(jthread vthread)` is added 
>> which has jthread parameter of the target virtual thread.
>> 
>> Testing:
>>   mach5 jobs are TBD (preliminary testing was completed):
>>    - all JVMTI, JDWP, JDI and JDB tests have to be run
>>    - Kitchensink
>>    - tier5
>
> Serguei Spitsyn has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   fix race between VTMS_transition_disable_for_one and start_VTMS_transition

Hi Serguei,

I looked at the latest changes and it all looks good to me. Thanks!

Patricio

src/hotspot/share/prims/jvmtiThreadState.cpp line 376:

> 374:   Atomic::dec(&_VTMS_transition_disable_for_one_count);
> 375:   if (_VTMS_transition_disable_for_one_count == 0 || _is_SR) {
> 376:     ml.notify_all();

I was going to say that we don't really need the global 
_VTMS_transition_disable_for_one_count since we can notify here if 
java_lang_Thread::VTMS_transition_disable_count(vth()) is zero, which is what 
the target checks. But I realized everybody uses the same lock so we would be 
notifying everybody. Using _VTMS_transition_disable_for_one_count as it is at 
least we notify everybody at once when there are no more single disablers. Not 
sure if that was the purpose, otherwise I think we could remove it.

src/hotspot/share/prims/jvmtiThreadState.cpp line 479:

> 477: 
> 478:   // Unblock waiting VTMS transition disablers.
> 479:   if (_VTMS_transition_disable_for_one_count > 0 ||

In here it would actually be the other way. If we would check 
java_lang_Thread::VTMS_transition_disable_count(vth()) > 0 instead of the 
global _VTMS_transition_disable_for_one_count we would avoid the notify in case 
there are singler disablers waiting but not for this thread.

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

Marked as reviewed by pchilanomate (Reviewer).

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

Reply via email to