< 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 >