RFR: 8367982: Unify ObjectSynchronizer and LightweightSynchronizer

Fredrik Bredberg fbredberg at openjdk.org
Fri Oct 24 13:49:09 UTC 2025


On Thu, 23 Oct 2025 17:29:29 GMT, Patricio Chilano Mateo <pchilanomate at openjdk.org> wrote:

>> This is the last PR in a series of PRs (see: [JDK-8344261](https://bugs.openjdk.org/browse/JDK-8344261)) to obsolete the LockingMode flag and related code.
>> 
>> The main focus is to to unify `ObjectSynchronizer` and `LightweightSynchronizer`.
>> There used to be a number of "dispatch functions" to redirect calls depending on the setting of the `LockingMode` flag.
>> Since we now only have lightweight locking, there is no longer any need for those dispatch functions, so I removed them.
>> To remove the dispatch functions I renamed the corresponding lightweight functions and call them directly.
>> This ultimately led me to remove "lightweight" from the function names and go back to "fast" instead, just to avoid having some with, and some without the "lightweight" part of the name.
>> 
>> This PR also include a small simplification of `ObjectSynchronizer::FastHashCode`.
>> 
>> Tested tier1-7 (on supported platforms) without seeing any problems that can be traced to this code change.
>> All other platforms (`arm`, `ppc`, `riscv`, `s390`) has been sanity checked using QEMU.
>
> src/hotspot/share/runtime/synchronizer.cpp line 648:
> 
>> 646:       // stability and then install the hash.
>> 647:     } else {
>> 648:       assert(!mark.is_unlocked() && !mark.is_fast_locked(), "invariant");
> 
> Note that `mark.monitor()` below already asserts `mark.has_monitor()` which is stronger.

Good point, but I still like to keep the `assert()` on 648 for clarity. Would you rather see it removed?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27915#discussion_r2460563344


More information about the serviceability-dev mailing list