< prev index next >

src/hotspot/share/gc/z/zRelocate.cpp

Print this page

        

*** 20,29 **** --- 20,31 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ #include "precompiled.hpp" + #include "gc/z/zAddress.inline.hpp" + #include "gc/z/zBarrier.inline.hpp" #include "gc/z/zHeap.hpp" #include "gc/z/zOopClosures.inline.hpp" #include "gc/z/zPage.hpp" #include "gc/z/zRelocate.hpp" #include "gc/z/zRelocationSet.inline.hpp"
*** 33,48 **** --- 35,60 ---- ZRelocate::ZRelocate(ZWorkers* workers) : _workers(workers) {} class ZRelocateRootsIteratorClosure : public ZRootsIteratorClosure { + private: + static void remap_address(HeapWord** p) { + *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p); + } + public: virtual void do_thread(Thread* thread) { ZRootsIteratorClosure::do_thread(thread); // Update thread local address bad mask ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask); + + // Remap TLAB + if (UseTLAB && thread->is_Java_thread()) { + thread->tlab().addresses_do(remap_address); + } } virtual void do_oop(oop* p) { ZBarrier::relocate_barrier_on_root_oop_field(p); }
< prev index next >