8210881: ZGC: Introduce ZRootsIteratorClosure

Reviewed-by: eosterlund
This commit is contained in:
Per Lidén 2018-09-19 19:12:18 +02:00
parent a69f014ad7
commit 85e31a838e
8 changed files with 134 additions and 126 deletions

View file

@ -117,6 +117,24 @@ void ZMark::prepare_mark() {
}
}
class ZMarkRootsIteratorClosure : public ZRootsIteratorClosure {
public:
virtual void do_thread(Thread* thread) {
ZRootsIteratorClosure::do_thread(thread);
// Update thread local address bad mask
ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask);
}
virtual void do_oop(oop* p) {
ZBarrier::mark_barrier_on_root_oop_field(p);
}
virtual void do_oop(narrowOop* p) {
ShouldNotReachHere();
}
};
class ZMarkRootsTask : public ZTask {
private:
ZMark* const _mark;
@ -129,7 +147,7 @@ public:
_roots() {}
virtual void work() {
ZMarkRootOopClosure cl;
ZMarkRootsIteratorClosure cl;
_roots.oops_do(&cl);
// Flush and free worker stacks. Needed here since