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

Aleksey Shipilev shade at openjdk.org
Thu May 11 14:45:47 UTC 2023


On Thu, 11 May 2023 12:29:59 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 with a new target base due to a merge or a rebase. The pull request now contains 24 commits:
> 
>  - Merge branch 'JDK-8305896' into JDK-8305898
>  - wqRevert "Rename self-forwarded -> forward-failed"
>    
>    This reverts commit 4d9713ca239da8e294c63887426bfb97240d3130.
>  - Merge branch 'JDK-8305896' into JDK-8305898
>  - Merge remote-tracking branch 'origin/JDK-8305898' into JDK-8305898
>  - 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>
>  - Rename self-forwarded -> forward-failed
>  - Fix asserts (again)
>  - Fix assert
>  - Merge branch 'JDK-8305896' into JDK-8305898
>  - ... and 14 more: https://git.openjdk.org/jdk/compare/3271b29b...95341f0a

I am okay with it, provided it passes `tier1..3`, and at least `tier1` with different GCs.

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

Marked as reviewed by shade (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/13779#pullrequestreview-1422780943


More information about the hotspot-dev mailing list