RFR: 8305898: Alternative self-forwarding mechanism [v13]
Roman Kennke
rkennke at openjdk.org
Fri May 12 17:14: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 pull request now contains 25 commits:
- Merge branch 'JDK-8305896' into JDK-8305898
- 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
- ... and 15 more: https://git.openjdk.org/jdk/compare/f1ad3421...880d564a
-------------
Changes: https://git.openjdk.org/jdk/pull/13779/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13779&range=12
Stats: 86 lines in 8 files changed: 70 ins; 2 del; 14 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