OM World and Lilliput planning

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Mon Jun 17 13:21:17 UTC 2024


Hi Roman, Thomas and Aleksey,

I filed an RFE for the first part of this. 
https://bugs.openjdk.org/browse/JDK-8334299 and will be working on a 
CSR.  I feel like we're backtracking a bit from what we did in JDK 22/23 
but this seems better to me.  Comments?

Thanks,
Coleen

On 6/5/24 3:19 AM, Stefan Karlsson wrote:
> Hi Coleen,
>
> Thanks for moving the "OM World" towards completion. I have one 
> comment below:
>
> On 2024-06-04 22:52, coleen.phillimore at oracle.com wrote:
>>
>> Hi, This is what I wrote up after an internal discussion.  I am about 
>> to file some RFEs/CSRs (or maybe will next week).  Let me know what 
>> you think.
>>
>> Thanks,
>> Coleen
>>
>> What we call OM World is saving the ObjectMonitor in a 
>> ConcurrentHashTable rather than in the markWord of the Java Object. 
>> Lilliput absolutely requires this since for Lilliput the Klass 
>> pointer is also in the markWord and to get to the Klass pointer for a 
>> locked object, the code would have to go to the displaced header in 
>> unboundedly racy situations.
>>
>> Without Lilliput, this is also helpful in that it frees up markWord 
>> bits for concurrent GCs or Valhalla  to use. Because of this, and 
>> because of the high level of testing this type of change requires, 
>> we'd like to push this change to mainline ahead of the Lilliput work.
>>
>> OM World is built on top of Lightweight locking as Lightweight 
>> locking is required (doesn't save the stack location in the markWord 
>> as does Legacy locking).  To reduce the maintenance burden and 
>> potential tricky interactions between new features and Legacy 
>> locking, we'd like to deprecate Legacy locking in JDK 24.
>>
>> Deprecating Legacy locking then makes the flag LockingMode not make 
>> any sense, as one of three enumerations will be missing. Also, to 
>> introduce OM World on top of Lightweight locking, it would be good to 
>> have that on a diagnostic flag in case of customer performance 
>> issues.  It doesn't make sense to have a new locking mode for OM 
>> World, since it shares 80% code with Lightweight locking.
>>
>> Therefore I (with input from Axel and Stefan) propose the following 
>> for JDK 24:
>>
>> 1. Reintroduce the flag UseHeavyMonitors for LockingMode=LM_MONITOR
>> 2. Deprecate LockingMode=LM_LEGACY
>> 3. Deprecate the flag LockingMode.  It's a new flag, legacy code 
>> won't miss it.
>> 4. When OM World is ready to integrate, introduce a new diagnostic 
>> flag UseObjectMonitorTable
>>       - Start default off
>>       - Make it default on midway through JDK 24 if no problems.
>
> What is the benefit of starting with this turned off and then a few 
> weeks later making it default? I think we'll get better functional 
> test coverage if it is enabled by default. We had a very similar 
> situation when Lightweight locking was turned off by default and many 
> bugs weren't found until it was turned on by default.
>
> Thanks,
> StefanK
>
>>
>> JDK 25:
>>
>> 1. Obsolete Legacy locking mode (removes the code - TBD)
>> 2. Obsolete LockingMode flag
>> 3. We can hold onto UseObjectMonitorTable for a while (off turns off 
>> Lilliput UseCompactObjectHeaders).
>>
>



More information about the lilliput-dev mailing list