< 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 >