< prev index next >

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

Print this page




2495   }
2496 };
2497 
2498 void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
2499   IterateObjectClosureRegionClosure blk(cl);
2500   heap_region_iterate(&blk);
2501 }
2502 
2503 // Calls a SpaceClosure on a HeapRegion.
2504 
2505 class SpaceClosureRegionClosure: public HeapRegionClosure {
2506   SpaceClosure* _cl;
2507 public:
2508   SpaceClosureRegionClosure(SpaceClosure* cl) : _cl(cl) {}
2509   bool doHeapRegion(HeapRegion* r) {
2510     _cl->do_space(r);
2511     return false;
2512   }
2513 };
2514 
2515 void G1CollectedHeap::space_iterate(SpaceClosure* cl) {
2516   SpaceClosureRegionClosure blk(cl);
2517   heap_region_iterate(&blk);
2518 }
2519 
2520 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
2521   _hrm.iterate(cl);
2522 }
2523 
2524 void
2525 G1CollectedHeap::heap_region_par_iterate(HeapRegionClosure* cl,
2526                                          uint worker_id,
2527                                          HeapRegionClaimer *hrclaimer,
2528                                          bool concurrent) const {
2529   _hrm.par_iterate(cl, worker_id, hrclaimer, concurrent);
2530 }
2531 
2532 // Clear the cached CSet starting regions and (more importantly)
2533 // the time stamps. Called when we reset the GC time stamp.
2534 void G1CollectedHeap::clear_cset_start_regions() {
2535   assert(_worker_cset_start_region != NULL, "sanity");
2536   assert(_worker_cset_start_region_time_stamp != NULL, "sanity");
2537 
2538   int n_queues = MAX2((int)ParallelGCThreads, 1);
2539   for (int i = 0; i < n_queues; i++) {




2495   }
2496 };
2497 
2498 void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
2499   IterateObjectClosureRegionClosure blk(cl);
2500   heap_region_iterate(&blk);
2501 }
2502 
2503 // Calls a SpaceClosure on a HeapRegion.
2504 
2505 class SpaceClosureRegionClosure: public HeapRegionClosure {
2506   SpaceClosure* _cl;
2507 public:
2508   SpaceClosureRegionClosure(SpaceClosure* cl) : _cl(cl) {}
2509   bool doHeapRegion(HeapRegion* r) {
2510     _cl->do_space(r);
2511     return false;
2512   }
2513 };
2514 





2515 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
2516   _hrm.iterate(cl);
2517 }
2518 
2519 void
2520 G1CollectedHeap::heap_region_par_iterate(HeapRegionClosure* cl,
2521                                          uint worker_id,
2522                                          HeapRegionClaimer *hrclaimer,
2523                                          bool concurrent) const {
2524   _hrm.par_iterate(cl, worker_id, hrclaimer, concurrent);
2525 }
2526 
2527 // Clear the cached CSet starting regions and (more importantly)
2528 // the time stamps. Called when we reset the GC time stamp.
2529 void G1CollectedHeap::clear_cset_start_regions() {
2530   assert(_worker_cset_start_region != NULL, "sanity");
2531   assert(_worker_cset_start_region_time_stamp != NULL, "sanity");
2532 
2533   int n_queues = MAX2((int)ParallelGCThreads, 1);
2534   for (int i = 0; i < n_queues; i++) {


< prev index next >