< prev index next >

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

Print this page

45     ZPhantomIsAliveObjectClosure is_alive;
46     ZPhantomKeepAliveOopClosure keep_alive;
47     _weak_roots.weak_oops_do(&is_alive, &keep_alive);
48   }
49 };
50 
51 void ZWeakRootsProcessor::process_weak_roots() {
52   ZProcessWeakRootsTask task;
53   _workers->run_parallel(&task);
54 }
55 
56 class ZProcessConcurrentWeakRootsTask : public ZTask {
57 private:
58   ZConcurrentWeakRootsIterator _concurrent_weak_roots;
59 
60 public:
61   ZProcessConcurrentWeakRootsTask() :
62       ZTask("ZProcessConccurentWeakRootsTask"),
63       _concurrent_weak_roots() {}
64 




65   virtual void work() {
66     ZPhantomCleanOopClosure cl;
67     _concurrent_weak_roots.oops_do(&cl);
68   }
69 };
70 
71 void ZWeakRootsProcessor::process_concurrent_weak_roots() {
72   ZProcessConcurrentWeakRootsTask task;
73   _workers->run_concurrent(&task);
74 }

45     ZPhantomIsAliveObjectClosure is_alive;
46     ZPhantomKeepAliveOopClosure keep_alive;
47     _weak_roots.weak_oops_do(&is_alive, &keep_alive);
48   }
49 };
50 
51 void ZWeakRootsProcessor::process_weak_roots() {
52   ZProcessWeakRootsTask task;
53   _workers->run_parallel(&task);
54 }
55 
56 class ZProcessConcurrentWeakRootsTask : public ZTask {
57 private:
58   ZConcurrentWeakRootsIterator _concurrent_weak_roots;
59 
60 public:
61   ZProcessConcurrentWeakRootsTask() :
62       ZTask("ZProcessConccurentWeakRootsTask"),
63       _concurrent_weak_roots() {}
64 
65   ~ZProcessConcurrentWeakRootsTask() {
66     _concurrent_weak_roots.notify();
67   }
68 
69   virtual void work() {
70     ZPhantomCleanOopClosure cl;
71     _concurrent_weak_roots.oops_do(&cl);
72   }
73 };
74 
75 void ZWeakRootsProcessor::process_concurrent_weak_roots() {
76   ZProcessConcurrentWeakRootsTask task;
77   _workers->run_concurrent(&task);
78 }
< prev index next >