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 serviceability-dev
mailing list