RFR: 8253064: monitor list simplifications and getting rid of TSM [v4]

Daniel D.Daugherty dcubed at openjdk.java.net
Tue Nov 10 21:21:04 UTC 2020


On Tue, 10 Nov 2020 16:46:10 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Daniel D. Daugherty has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   dholmes-ora - convert inner while loop to do-while loop in unlink_deflated().
>
> src/hotspot/share/runtime/monitorDeflationThread.cpp line 85:
> 
>> 83:       // visible to external suspension.
>> 84: 
>> 85:       ThreadBlockInVM tbivm(jt);
> 
> Does this have to be a JavaThread?  Could it be a non-java thread since deflating monitors doesn't have to call any Java code?  You'd have to lock down the Monitor list maybe, but couldn't this be a NamedThread?  This isn't a request to change it right now.

Ummm... we use a JavaThread because we have to stop async deflation
during safepoints so that we're not messing with Object headers during GC.
Yes, it's possible to use a non-JavaThread because this is "just software",
but I don't want to try to figure out those races...

> src/hotspot/share/runtime/synchronizer.cpp line 1641:
> 
>> 1639: 
>> 1640: // Do the final audit and print of ObjectMonitor stats; must be done
>> 1641: // by the VMThread (at VM exit time).
> 
> Can you take (at VM exit time) out of parenthesis?  it made me wonder when else is this called.

Okay.

> src/hotspot/share/runtime/objectMonitor.cpp line 509:
> 
>> 507: //
>> 508: bool ObjectMonitor::deflate_monitor() {
>> 509:   if (is_busy()) {
> 
> is_busy should be checked != 0 since it doesn't return a bool.

Nice catch! That has been there for many, many years...

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

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


More information about the serviceability-dev mailing list