< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp

Print this page
rev 60374 : 8215624: add parallel heap iteration for jmap histo (G1)


1326     // into heap dumper.
1327     ShenandoahHeapIterationRootScanner rp;
1328     rp.roots_do(&oops);
1329   }
1330 
1331   // Work through the oop stack to traverse heap.
1332   while (! oop_stack.is_empty()) {
1333     oop obj = oop_stack.pop();
1334     assert(oopDesc::is_oop(obj), "must be a valid oop");
1335     cl->do_object(obj);
1336     obj->oop_iterate(&oops);
1337   }
1338 
1339   assert(oop_stack.is_empty(), "should be empty");
1340 
1341   if (!_aux_bitmap_region_special && !os::uncommit_memory((char*)_aux_bitmap_region.start(), _aux_bitmap_region.byte_size())) {
1342     log_warning(gc)("Could not uncommit native memory for auxiliary marking bitmap for heap iteration");
1343   }
1344 }
1345 




1346 // Keep alive an object that was loaded with AS_NO_KEEPALIVE.
1347 void ShenandoahHeap::keep_alive(oop obj) {
1348   if (is_concurrent_mark_in_progress()) {
1349     ShenandoahBarrierSet::barrier_set()->enqueue(obj);
1350   }
1351 }
1352 
1353 void ShenandoahHeap::heap_region_iterate(ShenandoahHeapRegionClosure* blk) const {
1354   for (size_t i = 0; i < num_regions(); i++) {
1355     ShenandoahHeapRegion* current = get_region(i);
1356     blk->heap_region_do(current);
1357   }
1358 }
1359 
1360 class ShenandoahParallelHeapRegionTask : public AbstractGangTask {
1361 private:
1362   ShenandoahHeap* const _heap;
1363   ShenandoahHeapRegionClosure* const _blk;
1364 
1365   shenandoah_padding(0);




1326     // into heap dumper.
1327     ShenandoahHeapIterationRootScanner rp;
1328     rp.roots_do(&oops);
1329   }
1330 
1331   // Work through the oop stack to traverse heap.
1332   while (! oop_stack.is_empty()) {
1333     oop obj = oop_stack.pop();
1334     assert(oopDesc::is_oop(obj), "must be a valid oop");
1335     cl->do_object(obj);
1336     obj->oop_iterate(&oops);
1337   }
1338 
1339   assert(oop_stack.is_empty(), "should be empty");
1340 
1341   if (!_aux_bitmap_region_special && !os::uncommit_memory((char*)_aux_bitmap_region.start(), _aux_bitmap_region.byte_size())) {
1342     log_warning(gc)("Could not uncommit native memory for auxiliary marking bitmap for heap iteration");
1343   }
1344 }
1345 
1346 void ShenandoahHeap::run_task(AbstractGangTask* task) {
1347   workers()->run_task(task, workers()->active_workers());
1348 }
1349 
1350 // Keep alive an object that was loaded with AS_NO_KEEPALIVE.
1351 void ShenandoahHeap::keep_alive(oop obj) {
1352   if (is_concurrent_mark_in_progress()) {
1353     ShenandoahBarrierSet::barrier_set()->enqueue(obj);
1354   }
1355 }
1356 
1357 void ShenandoahHeap::heap_region_iterate(ShenandoahHeapRegionClosure* blk) const {
1358   for (size_t i = 0; i < num_regions(); i++) {
1359     ShenandoahHeapRegion* current = get_region(i);
1360     blk->heap_region_do(current);
1361   }
1362 }
1363 
1364 class ShenandoahParallelHeapRegionTask : public AbstractGangTask {
1365 private:
1366   ShenandoahHeap* const _heap;
1367   ShenandoahHeapRegionClosure* const _blk;
1368 
1369   shenandoah_padding(0);


< prev index next >