> 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
Tobias Hartmann has updated the pull request incrementally with one additional commit since the last revision: Use CAS to set mark ------------- Changes: - all: https://git.openjdk.org/valhalla/pull/1954/files - new: https://git.openjdk.org/valhalla/pull/1954/files/e4744a94..3f15d890 Webrevs: - full: https://webrevs.openjdk.org/?repo=valhalla&pr=1954&range=02 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=1954&range=01-02 Stats: 9 lines in 1 file changed: 4 ins; 0 del; 5 mod Patch: https://git.openjdk.org/valhalla/pull/1954.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1954/head:pull/1954 PR: https://git.openjdk.org/valhalla/pull/1954
