void ParCompactionManager::drain_region_stacks() { do { // Drain overflow stack first so other threads can steal. size_t region_index; while (region_stack()->pop_overflow(region_index)) { PSParallelCompact::fill_and_update_region(this, region_index); } while (region_stack()->pop_local(region_index)) { PSParallelCompact::fill_and_update_region(this, region_index); } } while (!region_stack()->is_empty()); }
void ParCompactionManager::push_region(size_t index) { #ifdef ASSERT const ParallelCompactData& sd = PSParallelCompact::summary_data(); ParallelCompactData::RegionData* const region_ptr = sd.region(index); assert(region_ptr->claimed(), "must be claimed"); assert(region_ptr->_pushed++ == 0, "should only be pushed once"); #endif region_stack()->push(index); }