--- old/src/hotspot/share/gc/z/zBarrier.cpp 2019-09-04 13:48:33.809012409 +0200 +++ new/src/hotspot/share/gc/z/zBarrier.cpp 2019-09-04 13:48:33.564004118 +0200 @@ -72,7 +72,7 @@ return true; } -template +template uintptr_t ZBarrier::mark(uintptr_t addr) { uintptr_t good_addr; @@ -89,7 +89,7 @@ // Mark if (should_mark_through(addr)) { - ZHeap::heap()->mark_object(good_addr); + ZHeap::heap()->mark_object(good_addr); } return good_addr; @@ -108,7 +108,7 @@ } uintptr_t ZBarrier::relocate_or_mark(uintptr_t addr) { - return during_relocate() ? relocate(addr) : mark(addr); + return during_relocate() ? relocate(addr) : mark(addr); } uintptr_t ZBarrier::relocate_or_remap(uintptr_t addr) { @@ -174,11 +174,11 @@ // Mark barrier // uintptr_t ZBarrier::mark_barrier_on_oop_slow_path(uintptr_t addr) { - return mark(addr); + return mark(addr); } uintptr_t ZBarrier::mark_barrier_on_finalizable_oop_slow_path(uintptr_t addr) { - const uintptr_t good_addr = mark(addr); + const uintptr_t good_addr = mark(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. @@ -200,7 +200,15 @@ assert(during_mark(), "Invalid phase"); // Mark - return mark(addr); + return mark(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(addr); } //