112 for (uint worker_id = 0; worker_id < _nworkers; worker_id++) { 113 const ZMarkStripe* const stripe = _stripes.stripe_for_worker(_nworkers, worker_id); 114 const size_t stripe_id = _stripes.stripe_id(stripe); 115 log.print(" Worker %u(%u) -> Stripe " SIZE_FORMAT "(" SIZE_FORMAT ")", 116 worker_id, _nworkers, stripe_id, nstripes); 117 } 118 } 119 } 120 121 class ZMarkRootsIteratorClosure : public ZRootsIteratorClosure { 122 public: 123 ZMarkRootsIteratorClosure() { 124 ZThreadLocalAllocBuffer::reset_statistics(); 125 } 126 127 ~ZMarkRootsIteratorClosure() { 128 ZThreadLocalAllocBuffer::publish_statistics(); 129 } 130 131 virtual void do_thread(Thread* thread) { 132 ZRootsIteratorClosure::do_thread(thread); 133 134 // Update thread local address bad mask 135 ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask); 136 137 // Retire TLAB 138 ZThreadLocalAllocBuffer::retire(thread); 139 } 140 141 virtual void do_oop(oop* p) { 142 ZBarrier::mark_barrier_on_root_oop_field(p); 143 } 144 145 virtual void do_oop(narrowOop* p) { 146 ShouldNotReachHere(); 147 } 148 }; 149 150 class ZMarkRootsTask : public ZTask { 151 private: 152 ZMark* const _mark; 153 ZRootsIterator _roots; | 112 for (uint worker_id = 0; worker_id < _nworkers; worker_id++) { 113 const ZMarkStripe* const stripe = _stripes.stripe_for_worker(_nworkers, worker_id); 114 const size_t stripe_id = _stripes.stripe_id(stripe); 115 log.print(" Worker %u(%u) -> Stripe " SIZE_FORMAT "(" SIZE_FORMAT ")", 116 worker_id, _nworkers, stripe_id, nstripes); 117 } 118 } 119 } 120 121 class ZMarkRootsIteratorClosure : public ZRootsIteratorClosure { 122 public: 123 ZMarkRootsIteratorClosure() { 124 ZThreadLocalAllocBuffer::reset_statistics(); 125 } 126 127 ~ZMarkRootsIteratorClosure() { 128 ZThreadLocalAllocBuffer::publish_statistics(); 129 } 130 131 virtual void do_thread(Thread* thread) { 132 // Update thread local address bad mask 133 ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask); 134 135 // Retire TLAB 136 ZThreadLocalAllocBuffer::retire(thread); 137 } 138 139 virtual void do_oop(oop* p) { 140 ZBarrier::mark_barrier_on_root_oop_field(p); 141 } 142 143 virtual void do_oop(narrowOop* p) { 144 ShouldNotReachHere(); 145 } 146 }; 147 148 class ZMarkRootsTask : public ZTask { 149 private: 150 ZMark* const _mark; 151 ZRootsIterator _roots; |