comparison src/share/vm/gc_implementation/g1/g1OopClosures.hpp @ 4837:eff609af17d7

7127706: G1: re-enable survivors during the initial-mark pause Summary: Re-enable survivors during the initial-mark pause. Afterwards, the concurrent marking threads have to scan them and mark everything reachable from them. The next GC will have to wait for the survivors to be scanned. Reviewed-by: brutisso, johnc
author tonyp
date Wed, 25 Jan 2012 12:58:23 -0500
parents d30fa85f9994
children b4ebad3520bb
comparison
equal deleted inserted replaced
4836:d30fa85f9994 4837: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