31 class ConcurrentMark; |
31 class ConcurrentMark; |
32 class DirtyCardToOopClosure; |
32 class DirtyCardToOopClosure; |
33 class CMBitMap; |
33 class CMBitMap; |
34 class CMMarkStack; |
34 class CMMarkStack; |
35 class G1ParScanThreadState; |
35 class G1ParScanThreadState; |
|
36 class CMTask; |
36 |
37 |
37 // A class that scans oops in a given heap region (much as OopsInGenClosure |
38 // A class that scans oops in a given heap region (much as OopsInGenClosure |
38 // scans oops in a generation.) |
39 // scans oops in a generation.) |
39 class OopsInHeapRegionClosure: public OopsInGenClosure { |
40 class OopsInHeapRegionClosure: public OopsInGenClosure { |
40 protected: |
41 protected: |
174 bool apply_to_weak_ref_discovered_field() { return true; } |
175 bool apply_to_weak_ref_discovered_field() { return true; } |
175 bool do_header() { return false; } |
176 bool do_header() { return false; } |
176 int out_of_region() { return _out_of_region; } |
177 int out_of_region() { return _out_of_region; } |
177 }; |
178 }; |
178 |
179 |
|
180 // Closure for iterating over object fields during concurrent marking |
|
181 class G1CMOopClosure : public OopClosure { |
|
182 G1CollectedHeap* _g1h; |
|
183 ConcurrentMark* _cm; |
|
184 CMTask* _task; |
|
185 public: |
|
186 G1CMOopClosure(G1CollectedHeap* g1h, ConcurrentMark* cm, CMTask* task); |
|
187 template <class T> void do_oop_nv(T* p); |
|
188 virtual void do_oop( oop* p) { do_oop_nv(p); } |
|
189 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } |
|
190 }; |
|
191 |
179 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP |
192 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1OOPCLOSURES_HPP |