< prev index next >

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

Print this page




 617 
 618   // Free remaining stacks
 619   stacks->free(&_allocator);
 620 }
 621 
 622 class ZMarkConcurrentRootsIteratorClosure : public ZRootsIteratorClosure {
 623 public:
 624   virtual void do_oop(oop* p) {
 625     ZBarrier::mark_barrier_on_oop_field(p, false /* finalizable */);
 626   }
 627 
 628   virtual void do_oop(narrowOop* p) {
 629     ShouldNotReachHere();
 630   }
 631 };
 632 
 633 
 634 class ZMarkConcurrentRootsTask : public ZTask {
 635 private:
 636   SuspendibleThreadSetJoiner          _sts_joiner;
 637   ZConcurrentRootsIterator            _roots;
 638   ZMarkConcurrentRootsIteratorClosure _cl;
 639 
 640 public:
 641   ZMarkConcurrentRootsTask(ZMark* mark) :
 642       ZTask("ZMarkConcurrentRootsTask"),
 643       _sts_joiner(true /* active */),
 644       _roots(ClassLoaderData::_claim_strong),
 645       _cl() {
 646     ClassLoaderDataGraph_lock->lock();
 647     ClassLoaderDataGraph::clear_claimed_marks();
 648   }
 649 
 650   ~ZMarkConcurrentRootsTask() {
 651     ClassLoaderDataGraph_lock->unlock();
 652   }
 653 
 654   virtual void work() {
 655     _roots.oops_do(&_cl);
 656   }
 657 };
 658 
 659 class ZMarkTask : public ZTask {
 660 private:
 661   ZMark* const   _mark;
 662   const uint64_t _timeout_in_millis;
 663 
 664 public:
 665   ZMarkTask(ZMark* mark, uint64_t timeout_in_millis = 0) :
 666       ZTask("ZMarkTask"),
 667       _mark(mark),




 617 
 618   // Free remaining stacks
 619   stacks->free(&_allocator);
 620 }
 621 
 622 class ZMarkConcurrentRootsIteratorClosure : public ZRootsIteratorClosure {
 623 public:
 624   virtual void do_oop(oop* p) {
 625     ZBarrier::mark_barrier_on_oop_field(p, false /* finalizable */);
 626   }
 627 
 628   virtual void do_oop(narrowOop* p) {
 629     ShouldNotReachHere();
 630   }
 631 };
 632 
 633 
 634 class ZMarkConcurrentRootsTask : public ZTask {
 635 private:
 636   SuspendibleThreadSetJoiner          _sts_joiner;
 637   ZConcurrentRootsIteratorClaimStrong _roots;
 638   ZMarkConcurrentRootsIteratorClosure _cl;
 639 
 640 public:
 641   ZMarkConcurrentRootsTask(ZMark* mark) :
 642       ZTask("ZMarkConcurrentRootsTask"),
 643       _sts_joiner(),
 644       _roots(),
 645       _cl() {
 646     ClassLoaderDataGraph_lock->lock();

 647   }
 648 
 649   ~ZMarkConcurrentRootsTask() {
 650     ClassLoaderDataGraph_lock->unlock();
 651   }
 652 
 653   virtual void work() {
 654     _roots.oops_do(&_cl);
 655   }
 656 };
 657 
 658 class ZMarkTask : public ZTask {
 659 private:
 660   ZMark* const   _mark;
 661   const uint64_t _timeout_in_millis;
 662 
 663 public:
 664   ZMarkTask(ZMark* mark, uint64_t timeout_in_millis = 0) :
 665       ZTask("ZMarkTask"),
 666       _mark(mark),


< prev index next >