src/share/vm/gc_implementation/g1/g1OopClosures.hpp

changeset 3464
eff609af17d7
parent 3463
d30fa85f9994
child 3466
b4ebad3520bb
equal deleted inserted replaced
3463:d30fa85f9994 3464:eff609af17d7
218 int out_of_region() { return _out_of_region; } 218 int out_of_region() { return _out_of_region; }
219 }; 219 };
220 220
221 // Closure for iterating over object fields during concurrent marking 221 // Closure for iterating over object fields during concurrent marking
222 class G1CMOopClosure : public OopClosure { 222 class G1CMOopClosure : public OopClosure {
223 private:
223 G1CollectedHeap* _g1h; 224 G1CollectedHeap* _g1h;
224 ConcurrentMark* _cm; 225 ConcurrentMark* _cm;
225 CMTask* _task; 226 CMTask* _task;
226 public: 227 public:
227 G1CMOopClosure(G1CollectedHeap* g1h, ConcurrentMark* cm, CMTask* task); 228 G1CMOopClosure(G1CollectedHeap* g1h, ConcurrentMark* cm, CMTask* task);
228 template <class T> void do_oop_nv(T* p); 229 template <class T> void do_oop_nv(T* p);
229 virtual void do_oop( oop* p) { do_oop_nv(p); } 230 virtual void do_oop( oop* p) { do_oop_nv(p); }
230 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } 231 virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
231 }; 232 };
232 233
234 // Closure to scan the root regions during concurrent marking
235 class G1RootRegionScanClosure : public OopClosure {
236 private:
237 G1CollectedHeap* _g1h;
238 ConcurrentMark* _cm;
239 uint _worker_id;
240 public:
241 G1RootRegionScanClosure(G1CollectedHeap* g1h, ConcurrentMark* cm,
242 uint worker_id) :
243 _g1h(g1h), _cm(cm), _worker_id(worker_id) { }
244 template <class T> void do_oop_nv(T* p);
245 virtual void do_oop( oop* p) { do_oop_nv(p); }
246 virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
247 };
248
233 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP 249 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP

mercurial