RFR: 8265753: Remove manual JavaThread transitions to blocked [v3]

Robbin Ehn rehn at openjdk.java.net
Mon May 17 07:58:24 UTC 2021


On Mon, 17 May 2021 01:36:05 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> src/hotspot/share/prims/jvmtiRawMonitor.cpp line 386:
>> 
>>> 384:     _waiters++;
>>> 385:     ret = simple_wait(self, millis);
>>> 386:     _waiters--;
>> 
>> We don't own the monitor yet so you cannot modify `_waiters` here.
>> Any reason you moved and duplicated this block?
>
> Good catch! Even if the block wasn't moved we still no longer own the monitor after simple_wait.
> 
> This is going to be tricky to fix in a clear/clean way as the waiters count has to be maintained properly.

Actually the field is unused.
The _entry_list is the list of waiters, which is the only thing we really care about.
If there was a reader of _waiter reading it without lock can only be used as some kind of hint.
If you have lock you can just check _entry_list.

I duplicated it because otherwise I would need two branchse on if (self->is_Java_thread()) which creates more complicated code.

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

PR: https://git.openjdk.java.net/jdk/pull/3875


More information about the hotspot-runtime-dev mailing list