mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-15 08:34:30 +02:00
8210881: ZGC: Introduce ZRootsIteratorClosure
Reviewed-by: eosterlund
This commit is contained in:
parent
a69f014ad7
commit
85e31a838e
8 changed files with 134 additions and 126 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue