< prev index next >

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

Print this page
rev 60111 : webrev04


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




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




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


< prev index next >