On Wed, 4 Feb 2026 10:03:55 GMT, Paul Hübner <[email protected]> wrote:

> 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).

I think this looks good. From offline discussions I think I saw that the 
calculation of the identity hashcode could give a result of `0`, which means 
that`has_no_hash()` will return `true`. I wonder if it would be helpful to add 
a comment about that and why that is OK?

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

Marked as reviewed by stefank (Committer).

PR Review: 
https://git.openjdk.org/valhalla/pull/2029#pullrequestreview-3784694838

Reply via email to