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) 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.
- relates to
-
JDK-8305895 Implement JEP 450: Compact Object Headers (Experimental)
- Resolved
- links to
-
Review openjdk/jdk/13779
-
Review openjdk/jdk/17755
-
Review(master) openjdk/jdk/20603