167 class ScanRSClosure : public HeapRegionClosure {
168 size_t _cards_done, _cards;
169 G1CollectedHeap* _g1h;
170
171 G1ParPushHeapRSClosure* _oc;
172 CodeBlobClosure* _code_root_cl;
173
174 G1BlockOffsetTable* _bot;
175 G1SATBCardTableModRefBS *_ct_bs;
176
177 double _strong_code_root_scan_time_sec;
178 uint _worker_i;
179 size_t _block_size;
180 bool _try_claimed;
181
182 public:
183 ScanRSClosure(G1ParPushHeapRSClosure* oc,
184 CodeBlobClosure* code_root_cl,
185 uint worker_i);
186
187 bool doHeapRegion(HeapRegion* r);
188
189 double strong_code_root_scan_time_sec() {
190 return _strong_code_root_scan_time_sec;
191 }
192 size_t cards_done() { return _cards_done;}
193 size_t cards_looked_up() { return _cards;}
194 void set_try_claimed() { _try_claimed = true; }
195 private:
196 void scanCard(size_t index, HeapRegion *r);
197 void printCard(HeapRegion* card_region, size_t card_index,
198 HeapWord* card_start);
199 void scan_strong_code_roots(HeapRegion* r);
200 };
201
202 class UpdateRSOopClosure: public ExtendedOopClosure {
203 HeapRegion* _from;
204 G1RemSet* _rs;
205 uint _worker_i;
206
207 template <class T> void do_oop_work(T* p);
|
167 class ScanRSClosure : public HeapRegionClosure {
168 size_t _cards_done, _cards;
169 G1CollectedHeap* _g1h;
170
171 G1ParPushHeapRSClosure* _oc;
172 CodeBlobClosure* _code_root_cl;
173
174 G1BlockOffsetTable* _bot;
175 G1SATBCardTableModRefBS *_ct_bs;
176
177 double _strong_code_root_scan_time_sec;
178 uint _worker_i;
179 size_t _block_size;
180 bool _try_claimed;
181
182 public:
183 ScanRSClosure(G1ParPushHeapRSClosure* oc,
184 CodeBlobClosure* code_root_cl,
185 uint worker_i);
186
187 void doHeapRegion(HeapRegion* r);
188
189 double strong_code_root_scan_time_sec() {
190 return _strong_code_root_scan_time_sec;
191 }
192 size_t cards_done() { return _cards_done;}
193 size_t cards_looked_up() { return _cards;}
194 void set_try_claimed() { _try_claimed = true; }
195 private:
196 void scanCard(size_t index, HeapRegion *r);
197 void printCard(HeapRegion* card_region, size_t card_index,
198 HeapWord* card_start);
199 void scan_strong_code_roots(HeapRegion* r);
200 };
201
202 class UpdateRSOopClosure: public ExtendedOopClosure {
203 HeapRegion* _from;
204 G1RemSet* _rs;
205 uint _worker_i;
206
207 template <class T> void do_oop_work(T* p);
|