< prev index next >
src/hotspot/share/gc/z/zBarrier.cpp
Print this page
*** 70,80 ****
// Mark through
return true;
}
! template <bool finalizable, bool publish>
uintptr_t ZBarrier::mark(uintptr_t addr) {
uintptr_t good_addr;
if (ZAddress::is_marked(addr)) {
// Already marked, but try to mark though anyway
--- 70,80 ----
// Mark through
return true;
}
! template <bool follow, bool finalizable, bool publish>
uintptr_t ZBarrier::mark(uintptr_t addr) {
uintptr_t good_addr;
if (ZAddress::is_marked(addr)) {
// Already marked, but try to mark though anyway
*** 87,97 ****
good_addr = remap(addr);
}
// Mark
if (should_mark_through<finalizable>(addr)) {
! ZHeap::heap()->mark_object<finalizable, publish>(good_addr);
}
return good_addr;
}
--- 87,97 ----
good_addr = remap(addr);
}
// Mark
if (should_mark_through<finalizable>(addr)) {
! ZHeap::heap()->mark_object<follow, finalizable, publish>(good_addr);
}
return good_addr;
}
*** 106,116 ****
assert(!ZAddress::is_weak_good(addr), "Should not be weak good");
return ZHeap::heap()->relocate_object(addr);
}
uintptr_t ZBarrier::relocate_or_mark(uintptr_t addr) {
! return during_relocate() ? relocate(addr) : mark<Strong, Publish>(addr);
}
uintptr_t ZBarrier::relocate_or_remap(uintptr_t addr) {
return during_relocate() ? relocate(addr) : remap(addr);
}
--- 106,116 ----
assert(!ZAddress::is_weak_good(addr), "Should not be weak good");
return ZHeap::heap()->relocate_object(addr);
}
uintptr_t ZBarrier::relocate_or_mark(uintptr_t addr) {
! return during_relocate() ? relocate(addr) : mark<Follow, Strong, Publish>(addr);
}
uintptr_t ZBarrier::relocate_or_remap(uintptr_t addr) {
return during_relocate() ? relocate(addr) : remap(addr);
}
*** 172,186 ****
//
// Mark barrier
//
uintptr_t ZBarrier::mark_barrier_on_oop_slow_path(uintptr_t addr) {
! return mark<Strong, Overflow>(addr);
}
uintptr_t ZBarrier::mark_barrier_on_finalizable_oop_slow_path(uintptr_t addr) {
! const uintptr_t good_addr = mark<Finalizable, Overflow>(addr);
if (ZAddress::is_good(addr)) {
// If the oop was already strongly marked/good, then we do
// not want to downgrade it to finalizable marked/good.
return good_addr;
}
--- 172,186 ----
//
// Mark barrier
//
uintptr_t ZBarrier::mark_barrier_on_oop_slow_path(uintptr_t addr) {
! return mark<Follow, Strong, Overflow>(addr);
}
uintptr_t ZBarrier::mark_barrier_on_finalizable_oop_slow_path(uintptr_t addr) {
! const uintptr_t good_addr = mark<Follow, Finalizable, Overflow>(addr);
if (ZAddress::is_good(addr)) {
// If the oop was already strongly marked/good, then we do
// not want to downgrade it to finalizable marked/good.
return good_addr;
}
*** 198,208 ****
uintptr_t ZBarrier::mark_barrier_on_root_oop_slow_path(uintptr_t addr) {
assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
assert(during_mark(), "Invalid phase");
// Mark
! return mark<Strong, Publish>(addr);
}
//
// Relocate barrier
//
--- 198,216 ----
uintptr_t ZBarrier::mark_barrier_on_root_oop_slow_path(uintptr_t addr) {
assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
assert(during_mark(), "Invalid phase");
// Mark
! return mark<Follow, Strong, Publish>(addr);
! }
!
! uintptr_t ZBarrier::mark_barrier_on_invisible_root_oop_slow_path(uintptr_t addr) {
! assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint");
! assert(during_mark(), "Invalid phase");
!
! // Mark
! return mark<DontFollow, Strong, Publish>(addr);
}
//
// Relocate barrier
//
< prev index next >