< prev index next >

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

Print this page




2474 
2475 // Iterates an ObjectClosure over all objects within a HeapRegion.
2476 
2477 class IterateObjectClosureRegionClosure: public HeapRegionClosure {
2478   ObjectClosure* _cl;
2479 public:
2480   IterateObjectClosureRegionClosure(ObjectClosure* cl) : _cl(cl) {}
2481   bool doHeapRegion(HeapRegion* r) {
2482     if (!r->is_continues_humongous()) {
2483       r->object_iterate(_cl);
2484     }
2485     return false;
2486   }
2487 };
2488 
2489 void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
2490   IterateObjectClosureRegionClosure blk(cl);
2491   heap_region_iterate(&blk);
2492 }
2493 
2494 // Calls a SpaceClosure on a HeapRegion.
2495 
2496 class SpaceClosureRegionClosure: public HeapRegionClosure {
2497   SpaceClosure* _cl;
2498 public:
2499   SpaceClosureRegionClosure(SpaceClosure* cl) : _cl(cl) {}
2500   bool doHeapRegion(HeapRegion* r) {
2501     _cl->do_space(r);
2502     return false;
2503   }
2504 };
2505 
2506 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
2507   _hrm.iterate(cl);
2508 }
2509 
2510 void
2511 G1CollectedHeap::heap_region_par_iterate(HeapRegionClosure* cl,
2512                                          uint worker_id,
2513                                          HeapRegionClaimer *hrclaimer,
2514                                          bool concurrent) const {
2515   _hrm.par_iterate(cl, worker_id, hrclaimer, concurrent);
2516 }
2517 
2518 // Clear the cached CSet starting regions and (more importantly)
2519 // the time stamps. Called when we reset the GC time stamp.
2520 void G1CollectedHeap::clear_cset_start_regions() {
2521   assert(_worker_cset_start_region != NULL, "sanity");
2522   assert(_worker_cset_start_region_time_stamp != NULL, "sanity");
2523 
2524   int n_queues = MAX2((int)ParallelGCThreads, 1);
2525   for (int i = 0; i < n_queues; i++) {




2474 
2475 // Iterates an ObjectClosure over all objects within a HeapRegion.
2476 
2477 class IterateObjectClosureRegionClosure: public HeapRegionClosure {
2478   ObjectClosure* _cl;
2479 public:
2480   IterateObjectClosureRegionClosure(ObjectClosure* cl) : _cl(cl) {}
2481   bool doHeapRegion(HeapRegion* r) {
2482     if (!r->is_continues_humongous()) {
2483       r->object_iterate(_cl);
2484     }
2485     return false;
2486   }
2487 };
2488 
2489 void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
2490   IterateObjectClosureRegionClosure blk(cl);
2491   heap_region_iterate(&blk);
2492 }
2493 












2494 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
2495   _hrm.iterate(cl);
2496 }
2497 
2498 void
2499 G1CollectedHeap::heap_region_par_iterate(HeapRegionClosure* cl,
2500                                          uint worker_id,
2501                                          HeapRegionClaimer *hrclaimer,
2502                                          bool concurrent) const {
2503   _hrm.par_iterate(cl, worker_id, hrclaimer, concurrent);
2504 }
2505 
2506 // Clear the cached CSet starting regions and (more importantly)
2507 // the time stamps. Called when we reset the GC time stamp.
2508 void G1CollectedHeap::clear_cset_start_regions() {
2509   assert(_worker_cset_start_region != NULL, "sanity");
2510   assert(_worker_cset_start_region_time_stamp != NULL, "sanity");
2511 
2512   int n_queues = MAX2((int)ParallelGCThreads, 1);
2513   for (int i = 0; i < n_queues; i++) {


< prev index next >