On Mon, 18 Sep 2023 12:11:24 GMT, Axel Boldt-Christmas <abold...@openjdk.org> 
wrote:

>> ObjectMonitorIterator fails to return the most resent monitor added. It 
>> start with returning the `nextOM()` ObjectMonitor from the `_head` 
>> ObjectMonitor but fails to ever return the `_head` ObjectMonitor.
>> The current implementation can also not handle that the `_head` is nullptr 
>> (no monitors in the system) and returns a null ObjectMonitorIterator. Which 
>> is interpreted as `monitor list not supported, too old hotspot VM`.
>> 
>> Changed the iterator to keep return the current monitor (starts with 
>> `_head`) and decoupled `_head == nullptr` from the question if 
>> ObjectMonitorIterator is supported. 
>> 
>> Testing:
>>   * Passes all `serviceability/sa` tests
>>   * Currently running tier 1-3
>>   * Currently running GHA
>
> Axel Boldt-Christmas has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Copyright changes too

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/ObjectSynchronizer.java
 line 51:

> 49:     Address monitorListAddr = 
> objectSynchronizerType.getField("_in_use_list").getStaticFieldAddress();
> 50:     inUseListHead = 
> monitorListType.getAddressField("_head").getAddress(monitorListAddr);
> 51:     isSupported = true;

I understand the changes below, but I'm a bit less clear why the above changes 
were needed. Is this to help simplyfy the iterator logic below and make it 
easier to check for a null list?

I'm not so sure I like the `isSupported` logic. It seems we should throw an 
exception at some point if initialize() fails. I think in other classes when 
some part of initialize() fails, we just allow the NPE to happen when later 
logic tries to access the value. The check in objectMontitorIterator() was 
probably a somewhat misguided attempted to be compatible with older VMs, which 
is not something we really strive for anymore.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15782#discussion_r1329146543

Reply via email to