src/share/vm/gc_implementation/g1/g1RemSet.cpp

Print this page
rev 7056 : [mq]: 8058298


 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),