< 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::space_iterate(SpaceClosure* cl) {
2507   SpaceClosureRegionClosure blk(cl);
2508   heap_region_iterate(&blk);
2509 }
2510 
2511 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
2512   _hrm.iterate(cl);
2513 }
2514 
2515 void
2516 G1CollectedHeap::heap_region_par_iterate(HeapRegionClosure* cl,
2517                                          uint worker_id,
2518                                          HeapRegionClaimer *hrclaimer,
2519                                          bool concurrent) const {
2520   _hrm.par_iterate(cl, worker_id, hrclaimer, concurrent);
2521 }
2522 
2523 // Clear the cached CSet starting regions and (more importantly)
2524 // the time stamps. Called when we reset the GC time stamp.
2525 void G1CollectedHeap::clear_cset_start_regions() {
2526   assert(_worker_cset_start_region != NULL, "sanity");
2527   assert(_worker_cset_start_region_time_stamp != NULL, "sanity");
2528 
2529   int n_queues = MAX2((int)ParallelGCThreads, 1);
2530   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 >