RFR: 8305898: Alternative self-forwarding mechanism [v2]

Roman Kennke rkennke at openjdk.org
Thu May 4 17:26:06 UTC 2023


> Currently, the Serial, Parallel and G1 GCs store a pointer to self into object headers, when compaction fails, to indicate that the object has been looked at, but failed compaction into to-space. This is problematic for compact object headers ([JDK-8294992](https://bugs.openjdk.org/browse/JDK-8294992)) because it would (temporarily) over-write the crucial class information, which we need for heap parsing. I would like to propose an alternative: use the bit #3 (previously biased-locking bit) to indicate that an object is 'self-forwarded'. That preserves the crucial class information in the upper bits of the header until the full header gets restored.

Roman Kennke has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:

 - Merge branch 'JDK-8305896' into JDK-8305898
 - Merge branch 'JDK-8305896' into JDK-8305898
 - Use forwardee() in forward_to_atomic() method
 - Merge branch 'JDK-8305896' into JDK-8305898
 - Merge branch 'JDK-8305896' into JDK-8305898
 - Replace uses of decode_pointer() with forwardee()
 - 8305898: Alternative self-forwarding mechanism

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/13779/files
  - new: https://git.openjdk.org/jdk/pull/13779/files/909a8109..b9c8ca0f

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=13779&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=13779&range=00-01

  Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/13779.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13779/head:pull/13779

PR: https://git.openjdk.org/jdk/pull/13779


More information about the hotspot-dev mailing list