2450 } 2451 } 2452 #endif 2453 2454 // Iteration functions. 2455 2456 // Applies an ExtendedOopClosure onto all references of objects within a HeapRegion. 2457 2458 class IterateOopClosureRegionClosure: public HeapRegionClosure { 2459 ExtendedOopClosure* _cl; 2460 public: 2461 IterateOopClosureRegionClosure(ExtendedOopClosure* cl) : _cl(cl) {} 2462 bool doHeapRegion(HeapRegion* r) { 2463 if (!r->is_continues_humongous()) { 2464 r->oop_iterate(_cl); 2465 } 2466 return false; 2467 } 2468 }; 2469 2470 void G1CollectedHeap::oop_iterate(ExtendedOopClosure* cl) { 2471 IterateOopClosureRegionClosure blk(cl); 2472 heap_region_iterate(&blk); 2473 } 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 { | 2450 } 2451 } 2452 #endif 2453 2454 // Iteration functions. 2455 2456 // Applies an ExtendedOopClosure onto all references of objects within a HeapRegion. 2457 2458 class IterateOopClosureRegionClosure: public HeapRegionClosure { 2459 ExtendedOopClosure* _cl; 2460 public: 2461 IterateOopClosureRegionClosure(ExtendedOopClosure* cl) : _cl(cl) {} 2462 bool doHeapRegion(HeapRegion* r) { 2463 if (!r->is_continues_humongous()) { 2464 r->oop_iterate(_cl); 2465 } 2466 return false; 2467 } 2468 }; 2469 2470 // Iterates an ObjectClosure over all objects within a HeapRegion. 2471 2472 class IterateObjectClosureRegionClosure: public HeapRegionClosure { 2473 ObjectClosure* _cl; 2474 public: 2475 IterateObjectClosureRegionClosure(ObjectClosure* cl) : _cl(cl) {} 2476 bool doHeapRegion(HeapRegion* r) { 2477 if (!r->is_continues_humongous()) { 2478 r->object_iterate(_cl); 2479 } 2480 return false; 2481 } 2482 }; 2483 2484 void G1CollectedHeap::object_iterate(ObjectClosure* cl) { 2485 IterateObjectClosureRegionClosure blk(cl); 2486 heap_region_iterate(&blk); 2487 } 2488 2489 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const { |