< prev index next >
src/hotspot/share/gc/parallel/psParallelCompact.cpp
Print this page
rev 57223 : [mq]: shadow-region-final2-fixes
*** 2976,2986 ****
// Try to copy the content of the shadow region back to its corresponding
// heap region if the shadow region is filled. Otherwise, the GC thread
// fills the shadow region will copy the data back (see
// MoveAndUpdateShadowClosure::complete_region).
copy_back(sd.region_to_addr(cur->shadow_region()), sd.region_to_addr(cur));
! cm->push_shadow_region_mt_safe(cur->shadow_region());
cur->set_completed();
}
}
}
}
--- 2976,2986 ----
// Try to copy the content of the shadow region back to its corresponding
// heap region if the shadow region is filled. Otherwise, the GC thread
// fills the shadow region will copy the data back (see
// MoveAndUpdateShadowClosure::complete_region).
copy_back(sd.region_to_addr(cur->shadow_region()), sd.region_to_addr(cur));
! ParCompactionManager::push_shadow_region_mt_safe(cur->shadow_region());
cur->set_completed();
}
}
}
}
*** 3172,3182 ****
RegionData* const region_ptr = sd.region(region_idx);
size_t shadow_region = ParCompactionManager::pop_shadow_region_mt_safe(region_ptr);
// The InvalidShadow return value indicates the corresponding heap region is available,
// so use MoveAndUpdateClosure to fill the normal region. Otherwise, use
// MoveAndUpdateShadowClosure to fill the acquired shadow region.
! if (shadow_region == cm->InvalidShadow) {
MoveAndUpdateClosure cl(mark_bitmap(), cm, region_idx);
region_ptr->shadow_to_normal();
return fill_region(cm, cl, region_idx);
} else {
MoveAndUpdateShadowClosure cl(mark_bitmap(), cm, region_idx, shadow_region);
--- 3172,3182 ----
RegionData* const region_ptr = sd.region(region_idx);
size_t shadow_region = ParCompactionManager::pop_shadow_region_mt_safe(region_ptr);
// The InvalidShadow return value indicates the corresponding heap region is available,
// so use MoveAndUpdateClosure to fill the normal region. Otherwise, use
// MoveAndUpdateShadowClosure to fill the acquired shadow region.
! if (shadow_region == ParCompactionManager::InvalidShadow) {
MoveAndUpdateClosure cl(mark_bitmap(), cm, region_idx);
region_ptr->shadow_to_normal();
return fill_region(cm, cl, region_idx);
} else {
MoveAndUpdateShadowClosure cl(mark_bitmap(), cm, region_idx, shadow_region);
*** 3400,3410 ****
// count to zero will do the copying otherwise (see
// PSParallelCompact::decrement_destination_counts).
if (((region_ptr->available() && region_ptr->claim()) || region_ptr->claimed()) && region_ptr->mark_copied()) {
region_ptr->set_completed();
PSParallelCompact::copy_back(PSParallelCompact::summary_data().region_to_addr(_shadow), dest_addr);
! cm->push_shadow_region_mt_safe(_shadow);
}
}
UpdateOnlyClosure::UpdateOnlyClosure(ParMarkBitMap* mbm,
ParCompactionManager* cm,
--- 3400,3410 ----
// count to zero will do the copying otherwise (see
// PSParallelCompact::decrement_destination_counts).
if (((region_ptr->available() && region_ptr->claim()) || region_ptr->claimed()) && region_ptr->mark_copied()) {
region_ptr->set_completed();
PSParallelCompact::copy_back(PSParallelCompact::summary_data().region_to_addr(_shadow), dest_addr);
! ParCompactionManager::push_shadow_region_mt_safe(_shadow);
}
}
UpdateOnlyClosure::UpdateOnlyClosure(ParMarkBitMap* mbm,
ParCompactionManager* cm,
< prev index next >