2380 ObjectClosure* _cl;
2381 public:
2382 IterateObjectClosureRegionClosure(ObjectClosure* cl) : _cl(cl) {}
2383 bool doHeapRegion(HeapRegion* r) {
2384 if (!r->is_continues_humongous()) {
2385 r->object_iterate(_cl);
2386 }
2387 return false;
2388 }
2389 };
2390
2391 void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
2392 IterateObjectClosureRegionClosure blk(cl);
2393 heap_region_iterate(&blk);
2394 }
2395
2396 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
2397 _hrm.iterate(cl);
2398 }
2399
2400 void
2401 G1CollectedHeap::heap_region_par_iterate(HeapRegionClosure* cl,
2402 uint worker_id,
2403 HeapRegionClaimer *hrclaimer,
2404 bool concurrent) const {
2405 _hrm.par_iterate(cl, worker_id, hrclaimer, concurrent);
2406 }
2407
2408 void G1CollectedHeap::collection_set_iterate(HeapRegionClosure* cl) {
2409 _collection_set.iterate(cl);
2410 }
2411
2412 void G1CollectedHeap::collection_set_iterate_from(HeapRegionClosure *cl, uint worker_id) {
2413 _collection_set.iterate_from(cl, worker_id, workers()->active_workers());
2414 }
2415
2416 HeapRegion* G1CollectedHeap::next_compaction_region(const HeapRegion* from) const {
2417 HeapRegion* result = _hrm.next_region_in_heap(from);
2418 while (result != NULL && result->is_pinned()) {
2419 result = _hrm.next_region_in_heap(result);
2420 }
2421 return result;
2422 }
2423
2424 HeapWord* G1CollectedHeap::block_start(const void* addr) const {
2425 HeapRegion* hr = heap_region_containing(addr);
|
2380 ObjectClosure* _cl;
2381 public:
2382 IterateObjectClosureRegionClosure(ObjectClosure* cl) : _cl(cl) {}
2383 bool doHeapRegion(HeapRegion* r) {
2384 if (!r->is_continues_humongous()) {
2385 r->object_iterate(_cl);
2386 }
2387 return false;
2388 }
2389 };
2390
2391 void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
2392 IterateObjectClosureRegionClosure blk(cl);
2393 heap_region_iterate(&blk);
2394 }
2395
2396 void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const {
2397 _hrm.iterate(cl);
2398 }
2399
2400 void G1CollectedHeap::heap_region_par_iterate(HeapRegionClosure* cl,
2401 uint worker_id,
2402 HeapRegionClaimer *hrclaimer) const {
2403 _hrm.par_iterate(cl, worker_id, hrclaimer);
2404 }
2405
2406 void G1CollectedHeap::collection_set_iterate(HeapRegionClosure* cl) {
2407 _collection_set.iterate(cl);
2408 }
2409
2410 void G1CollectedHeap::collection_set_iterate_from(HeapRegionClosure *cl, uint worker_id) {
2411 _collection_set.iterate_from(cl, worker_id, workers()->active_workers());
2412 }
2413
2414 HeapRegion* G1CollectedHeap::next_compaction_region(const HeapRegion* from) const {
2415 HeapRegion* result = _hrm.next_region_in_heap(from);
2416 while (result != NULL && result->is_pinned()) {
2417 result = _hrm.next_region_in_heap(result);
2418 }
2419 return result;
2420 }
2421
2422 HeapWord* G1CollectedHeap::block_start(const void* addr) const {
2423 HeapRegion* hr = heap_region_containing(addr);
|