408 CardTableModRefBS* _ctbs;
409 public:
410 ScrubRSClosure(BitMap* region_bm, BitMap* card_bm) :
411 _g1h(G1CollectedHeap::heap()),
412 _region_bm(region_bm), _card_bm(card_bm),
413 _ctbs(_g1h->g1_barrier_set()) {}
414
415 bool doHeapRegion(HeapRegion* r) {
416 if (!r->continuesHumongous()) {
417 r->rem_set()->scrub(_ctbs, _region_bm, _card_bm);
418 }
419 return false;
420 }
421 };
422
423 void G1RemSet::scrub(BitMap* region_bm, BitMap* card_bm) {
424 ScrubRSClosure scrub_cl(region_bm, card_bm);
425 _g1->heap_region_iterate(&scrub_cl);
426 }
427
428 void G1RemSet::scrub_par(BitMap* region_bm, BitMap* card_bm,
429 uint worker_num, int claim_val) {
430 ScrubRSClosure scrub_cl(region_bm, card_bm);
431 _g1->heap_region_par_iterate_chunked(&scrub_cl,
432 worker_num,
433 n_workers(),
434 claim_val);
435 }
436
437 G1TriggerClosure::G1TriggerClosure() :
438 _triggered(false) { }
439
440 G1InvokeIfNotTriggeredClosure::G1InvokeIfNotTriggeredClosure(G1TriggerClosure* t_cl,
441 OopClosure* oop_cl) :
442 _trigger_cl(t_cl), _oop_cl(oop_cl) { }
443
444 G1Mux2Closure::G1Mux2Closure(OopClosure *c1, OopClosure *c2) :
445 _c1(c1), _c2(c2) { }
446
447 G1UpdateRSOrPushRefOopClosure::
448 G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h,
449 G1RemSet* rs,
450 OopsInHeapRegionClosure* push_ref_cl,
451 bool record_refs_into_cset,
452 uint worker_i) :
453 _g1(g1h), _g1_rem_set(rs), _from(NULL),
454 _record_refs_into_cset(record_refs_into_cset),
|
408 CardTableModRefBS* _ctbs;
409 public:
410 ScrubRSClosure(BitMap* region_bm, BitMap* card_bm) :
411 _g1h(G1CollectedHeap::heap()),
412 _region_bm(region_bm), _card_bm(card_bm),
413 _ctbs(_g1h->g1_barrier_set()) {}
414
415 bool doHeapRegion(HeapRegion* r) {
416 if (!r->continuesHumongous()) {
417 r->rem_set()->scrub(_ctbs, _region_bm, _card_bm);
418 }
419 return false;
420 }
421 };
422
423 void G1RemSet::scrub(BitMap* region_bm, BitMap* card_bm) {
424 ScrubRSClosure scrub_cl(region_bm, card_bm);
425 _g1->heap_region_iterate(&scrub_cl);
426 }
427
428 void G1RemSet::scrub_par(BitMap* region_bm, BitMap* card_bm, uint worker_num, HeapRegionClaimer *hrclaimer) {
429 ScrubRSClosure scrub_cl(region_bm, card_bm);
430 _g1->heap_region_par_iterate(&scrub_cl, worker_num, hrclaimer);
431 }
432
433 G1TriggerClosure::G1TriggerClosure() :
434 _triggered(false) { }
435
436 G1InvokeIfNotTriggeredClosure::G1InvokeIfNotTriggeredClosure(G1TriggerClosure* t_cl,
437 OopClosure* oop_cl) :
438 _trigger_cl(t_cl), _oop_cl(oop_cl) { }
439
440 G1Mux2Closure::G1Mux2Closure(OopClosure *c1, OopClosure *c2) :
441 _c1(c1), _c2(c2) { }
442
443 G1UpdateRSOrPushRefOopClosure::
444 G1UpdateRSOrPushRefOopClosure(G1CollectedHeap* g1h,
445 G1RemSet* rs,
446 OopsInHeapRegionClosure* push_ref_cl,
447 bool record_refs_into_cset,
448 uint worker_i) :
449 _g1(g1h), _g1_rem_set(rs), _from(NULL),
450 _record_refs_into_cset(record_refs_into_cset),
|