Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8305898: Alternative self-forwarding mechanism #13779

Closed
wants to merge 35 commits into from
Closed
Changes from 4 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
619e3fa
8305898: Alternative self-forwarding mechanism
rkennke May 3, 2023
7dca17a
Replace uses of decode_pointer() with forwardee()
rkennke May 3, 2023
d6c0bd0
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 3, 2023
0d066ea
Merge branch 'JDK-8305896' into JDK-8305898
May 4, 2023
efb08a6
Use forwardee() in forward_to_atomic() method
May 4, 2023
909a810
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 4, 2023
b9c8ca0
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 4, 2023
ab4aea0
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 8, 2023
15a8626
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 8, 2023
1313a45
Update src/hotspot/share/oops/oop.inline.hpp
rkennke May 9, 2023
06e555d
Update src/hotspot/share/oops/oop.inline.hpp
rkennke May 9, 2023
1d3e833
Update src/hotspot/share/oops/oop.inline.hpp
rkennke May 9, 2023
a559e8d
Update src/hotspot/share/oops/oop.inline.hpp
rkennke May 9, 2023
94e3d07
@shipilev suggestions
May 9, 2023
a142343
Merge branch 'JDK-8305896' into JDK-8305898
May 9, 2023
915c20b
Fix assert
May 9, 2023
6d39d57
Fix asserts (again)
May 9, 2023
eb04cd7
Update src/hotspot/share/oops/oop.inline.hpp
rkennke May 10, 2023
40c1b0b
Update src/hotspot/share/oops/oop.inline.hpp
rkennke May 10, 2023
4d9713c
Rename self-forwarded -> forward-failed
rkennke May 10, 2023
39c3372
Merge remote-tracking branch 'origin/JDK-8305898' into JDK-8305898
rkennke May 10, 2023
0229792
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 10, 2023
866771c
wqRevert "Rename self-forwarded -> forward-failed"
rkennke May 11, 2023
95341f0
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 11, 2023
880d564
Merge branch 'JDK-8305896' into JDK-8305898
May 12, 2023
d35cfb4
Fix tests on 32bit builds
rkennke May 13, 2023
9e934ba
Merge branch 'JDK-8305896' into JDK-8305898
rkennke May 17, 2023
4895ad8
Update comment about mark-word layout
rkennke May 17, 2023
3519da7
Merge branch 'JDK-8305896' into JDK-8305898
May 18, 2023
3838ac0
Merge branch 'JDK-8305896' into JDK-8305898
Jun 16, 2023
cd5f237
Merge branch 'JDK-8305896' into JDK-8305898
rkennke Aug 11, 2023
2a00d30
Merge branch 'JDK-8305896' into JDK-8305898
rkennke Aug 25, 2023
dbb74fb
Merge branch 'JDK-8305896' into JDK-8305898
rkennke Sep 29, 2023
eee8ab5
Merge branch 'JDK-8305896' into JDK-8305898
rkennke Nov 9, 2023
1a4dda1
Merge branch 'JDK-8305896' into JDK-8305898
rkennke Dec 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/hotspot/share/oops/oop.inline.hpp
Original file line number Diff line number Diff line change
@@ -268,14 +268,14 @@ bool oopDesc::is_forwarded() const {
// Used by scavengers
void oopDesc::forward_to(oop p) {
markWord m = markWord::encode_pointer_as_mark(p);
assert(forwardee(m) == p, "encoding must be reversable");
assert(forwardee(m) == p, "encoding must be reversible");
set_mark(m);
}

void oopDesc::forward_to_self() {
if (UseAltGCForwarding) {
markWord m = mark();
// If mark is displaced, we need to preserve real header during GC.
// If mark is displaced, we need to preserve the real header during GC.
// It will be restored to the displaced header after GC.
assert(SafepointSynchronize::is_at_safepoint(), "we can only safely fetch the displaced header at safepoint");
if (m.has_displaced_mark_helper()) {
@@ -303,7 +303,7 @@ oop oopDesc::forward_to_atomic(oop p, markWord compare, atomic_memory_order orde
oop oopDesc::forward_to_self_atomic(markWord compare, atomic_memory_order order) {
if (UseAltGCForwarding) {
markWord m = compare;
// If mark is displaced, we need to preserve real header during GC.
// If mark is displaced, we need to preserve the real header during GC.
// It will be restored to the displaced header after GC.
assert(SafepointSynchronize::is_at_safepoint(), "we can only safely fetch the displaced header at safepoint");
if (m.has_displaced_mark_helper()) {
@@ -319,7 +319,7 @@ oop oopDesc::forward_to_self_atomic(markWord compare, atomic_memory_order order)
return forwardee(old_mark);
}
} else {
return forward_to_atomic(oop(this), compare, order);
return forward_to_atomic(cast_to_oop(this), compare, order);
}
}