23 24 #include "precompiled.hpp" 25 #include "gc/z/zAddress.inline.hpp" 26 #include "gc/z/zBarrier.inline.hpp" 27 #include "gc/z/zHeap.hpp" 28 #include "gc/z/zOopClosures.inline.hpp" 29 #include "gc/z/zPage.hpp" 30 #include "gc/z/zRelocate.hpp" 31 #include "gc/z/zRelocationSet.inline.hpp" 32 #include "gc/z/zRootsIterator.hpp" 33 #include "gc/z/zTask.hpp" 34 #include "gc/z/zThreadLocalAllocBuffer.hpp" 35 #include "gc/z/zWorkers.hpp" 36 37 ZRelocate::ZRelocate(ZWorkers* workers) : 38 _workers(workers) {} 39 40 class ZRelocateRootsIteratorClosure : public ZRootsIteratorClosure { 41 public: 42 virtual void do_thread(Thread* thread) { 43 ZRootsIteratorClosure::do_thread(thread); 44 45 // Update thread local address bad mask 46 ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask); 47 48 // Remap TLAB 49 ZThreadLocalAllocBuffer::remap(thread); 50 } 51 52 virtual void do_oop(oop* p) { 53 ZBarrier::relocate_barrier_on_root_oop_field(p); 54 } 55 56 virtual void do_oop(narrowOop* p) { 57 ShouldNotReachHere(); 58 } 59 }; 60 61 class ZRelocateRootsTask : public ZTask { 62 private: 63 ZRootsIterator _roots; 64 ZRelocateRootsIteratorClosure _cl; | 23 24 #include "precompiled.hpp" 25 #include "gc/z/zAddress.inline.hpp" 26 #include "gc/z/zBarrier.inline.hpp" 27 #include "gc/z/zHeap.hpp" 28 #include "gc/z/zOopClosures.inline.hpp" 29 #include "gc/z/zPage.hpp" 30 #include "gc/z/zRelocate.hpp" 31 #include "gc/z/zRelocationSet.inline.hpp" 32 #include "gc/z/zRootsIterator.hpp" 33 #include "gc/z/zTask.hpp" 34 #include "gc/z/zThreadLocalAllocBuffer.hpp" 35 #include "gc/z/zWorkers.hpp" 36 37 ZRelocate::ZRelocate(ZWorkers* workers) : 38 _workers(workers) {} 39 40 class ZRelocateRootsIteratorClosure : public ZRootsIteratorClosure { 41 public: 42 virtual void do_thread(Thread* thread) { 43 // Update thread local address bad mask 44 ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask); 45 46 // Remap TLAB 47 ZThreadLocalAllocBuffer::remap(thread); 48 } 49 50 virtual void do_oop(oop* p) { 51 ZBarrier::relocate_barrier_on_root_oop_field(p); 52 } 53 54 virtual void do_oop(narrowOop* p) { 55 ShouldNotReachHere(); 56 } 57 }; 58 59 class ZRelocateRootsTask : public ZTask { 60 private: 61 ZRootsIterator _roots; 62 ZRelocateRootsIteratorClosure _cl; |