[lworld] RFR: 8376566: [lworld] Runtime cleanups of markWord hashCode for inline types after JDK-8376171
Paul Hübner
phubner at openjdk.org
Mon Feb 9 21:50:57 UTC 2026
Hi all,
The main ideas of this patch are to highlight and enforce the invariant we enforce when it comes to value objects' identity hash code.
The original JBS issues addresses the following points, which have been addressed to various extents:
1. Adding assertions to the CAS-setting of the hash in the markWord. This is vital to enforce the invariant and was added.
2. Breaking the loop if the CAS results in a conflict. Putting the identity hash in the markWord is an optimization, so one could break out of the loop whenever. With the assertion, there's a good confidence that CAS will eventually succeed, namely once other threads stop poking at the markWord bits. **If there is demand, I can add a fixed upper bound.**
3. SSA-ing the hash variable. Done.
4. Possibly introducing a markWord::has_hash to improve legibility. I did not do this as it would yield multiple `obj->mark()` calls in the fast path and the current form is (in my opinion) sufficiently legible.
Testing: tiers 1-3 on Linux (x64, AArch64), macOS (x64, AArch64), Windows (x64).
-------------
Commit messages:
- Returned the wrong thing.
- Undo several mistakes in logic.
- Fix lot's of broken semantics.
- Rework identity hash code CAS.
Changes: https://git.openjdk.org/valhalla/pull/2029/files
Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2029&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8376566
Stats: 28 lines in 1 file changed: 18 ins; 2 del; 8 mod
Patch: https://git.openjdk.org/valhalla/pull/2029.diff
Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2029/head:pull/2029
PR: https://git.openjdk.org/valhalla/pull/2029
More information about the valhalla-dev
mailing list