Historically we have had displaced markWord's because locking (stack locks, and inflated monitors).
After the `UseObjectMonitorTable` removal there are no more need to protect against displaced markWords. I suggest we simplify this logic and clean up the interface w.r.t. `identity_hash`. Changes the `fast_no_hash_check` and `has_no_hash` into `has_identity_hash` and `has_hash` checks. As before it is invalid to read the hash on marked objects, added asserts to ensure this. Rewrote `oopDesc::slow_identity_hash` to not regenerate a new hash every time it transiently fails to install the hash in the markWord due to some other header change. There are a few places which right now calls `identity_hash` from develop logging / introspection printing `InstanceStackChunkKlass::print_chunk` and `Continuation::print`. It is a bit unfortunate that we have these side-effects in debug VMs. But think we should handle these in a future RFE. Testing (in progress): * Tier 1-3 Oracle supported platforms * GHA --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - 8391174: Simplify `identity_hash` after UseObjectMonitorTable removal Changes: https://git.openjdk.org/jdk/pull/32535/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=32535&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8391174 Stats: 107 lines in 13 files changed: 31 ins; 37 del; 39 mod Patch: https://git.openjdk.org/jdk/pull/32535.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/32535/head:pull/32535 PR: https://git.openjdk.org/jdk/pull/32535
