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

Roman Kennke rkennke at openjdk.org
Tue May 9 20:07:37 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 incrementally with four additional commits since the last revision:

 - Update src/hotspot/share/oops/oop.inline.hpp
   
   Co-authored-by: Aleksey Shipilëv <shipilev at amazon.de>
 - Update src/hotspot/share/oops/oop.inline.hpp
   
   Co-authored-by: Aleksey Shipilëv <shipilev at amazon.de>
 - Update src/hotspot/share/oops/oop.inline.hpp
   
   Co-authored-by: Aleksey Shipilëv <shipilev at amazon.de>
 - Update src/hotspot/share/oops/oop.inline.hpp
   
   Co-authored-by: Aleksey Shipilëv <shipilev at amazon.de>

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/13779/files
  - new: https://git.openjdk.org/jdk/pull/13779/files/15a8626b..a559e8d6

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

  Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 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