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

Erik Österlund eosterlund at openjdk.org
Thu May 11 08:04:52 UTC 2023


On Wed, 10 May 2023 20:30:04 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> 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 two additional commits since the last revision:
> 
>  - Merge branch 'JDK-8305896' into JDK-8305898
>  - Align fake-heap without GCC warnings (duh)

Changes requested by eosterlund (Reviewer).

src/hotspot/share/oops/oop.inline.hpp line 276:

> 274: }
> 275: 
> 276: void oopDesc::forward_failed() {

It is a bit confusing that oopDesc::forward_failed is a setter, while markWord::forward_failed is a getter.

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

PR Review: https://git.openjdk.org/jdk/pull/13779#pullrequestreview-1421977259
PR Review Comment: https://git.openjdk.org/jdk/pull/13779#discussion_r1190781770


More information about the hotspot-dev mailing list