On Fri, 23 Jan 2026 10:20:37 GMT, Tobias Hartmann <[email protected]> wrote:

> Since [JDK-8247299](https://bugs.openjdk.org/browse/JDK-8247299), value 
> objects no longer use `markWord::always_locked_pattern` (see description of 
> [JDK-8247298](https://bugs.openjdk.org/browse/JDK-8247298) for more details). 
> Therefore, the limitations around storing the hash code in the mark word that 
> are mentioned in [JDK-8244975](https://bugs.openjdk.org/browse/JDK-8244975) 
> no longer exist. Let's enable this optimization.
> 
> Running `System.identityHashCode(obj)` in a loop and passing various 
> primitive boxes leads to a **17-18x speedup** on my machine. I'm also seeing 
> a **7% improvement** in the score of the SPECjvm2008 serial benchmark but we 
> are still a bit behind baseline without `--enable-preview`. More improvements 
> to come.
> 
> It's worth noting that value objects will lose their buffer object when 
> stored in a flat container or sometimes when being scalarized 
> ([JDK-8372268](https://bugs.openjdk.org/browse/JDK-8372268) will improve 
> this). The hash then needs to be re-computed, which is expensive.
> 
> I'm working on ways to further improve this, see 
> [JDK-8252185](https://bugs.openjdk.org/browse/JDK-8252185).
> 
> Thanks,
> Tobias

Yes, it's expected and intended. That said, I agree that someone from 
runtime/GC should review this.

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

PR Comment: https://git.openjdk.org/valhalla/pull/1954#issuecomment-3790122096

Reply via email to