--- old/src/hotspot/share/gc/parallel/psCompactionManager.hpp 2019-12-03 11:29:27.674992402 +0100 +++ new/src/hotspot/share/gc/parallel/psCompactionManager.hpp 2019-12-03 11:29:27.323981502 +0100 @@ -119,7 +119,7 @@ // marking stack and overflow stack directly. public: - static const size_t InvalidShadow = ~0; + static const size_t InvalidShadow = ~0; static size_t pop_shadow_region_mt_safe(PSParallelCompact::RegionData* region_ptr); static void push_shadow_region_mt_safe(size_t shadow_region); static void push_shadow_region(size_t shadow_region); --- old/src/hotspot/share/gc/parallel/psParallelCompact.cpp 2019-12-03 11:29:28.988033174 +0100 +++ new/src/hotspot/share/gc/parallel/psParallelCompact.cpp 2019-12-03 11:29:28.640022367 +0100 @@ -3134,7 +3134,6 @@ // The last object did not fit. Note that interior oop updates were // deferred, then copy enough of the object to fill the region. region_ptr->set_deferred_obj_addr(closure.destination()); - status = closure.copy_until_full(); // copies from closure.source() decrement_destination_counts(cm, src_space_id, src_region_idx, @@ -3171,7 +3170,7 @@ // Get a shadow region first ParallelCompactData& sd = summary_data(); RegionData* const region_ptr = sd.region(region_idx); - size_t shadow_region = cm->pop_shadow_region_mt_safe(region_ptr); + 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. @@ -3352,7 +3351,7 @@ void MoveAndUpdateClosure::complete_region(ParCompactionManager *cm, HeapWord *dest_addr, PSParallelCompact::RegionData *region_ptr) { - assert(region_ptr->shadow_state() == ParallelCompactData::RegionData::FinishedShadow, "Region should be finished"); + assert(region_ptr->shadow_state() == ParallelCompactData::RegionData::NormalRegion, "Region should be finished"); region_ptr->set_completed(); } @@ -3390,7 +3389,7 @@ void MoveAndUpdateShadowClosure::complete_region(ParCompactionManager *cm, HeapWord *dest_addr, PSParallelCompact::RegionData *region_ptr) { - assert(region_ptr->shadow_state() == ParallelCompactData::RegionData::Shadow, "Region should be shadow"); + assert(region_ptr->shadow_state() == ParallelCompactData::RegionData::ShadowRegion, "Region should be shadow"); // Record the shadow region index region_ptr->set_shadow_region(_shadow); // Mark the shadow region as filled to indicate the data is ready to be --- old/src/hotspot/share/gc/parallel/psParallelCompact.hpp 2019-12-03 11:29:30.335075002 +0100 +++ new/src/hotspot/share/gc/parallel/psParallelCompact.hpp 2019-12-03 11:29:29.982064040 +0100 @@ -630,26 +630,26 @@ } inline bool ParallelCompactData::RegionData::mark_normal() { - return Atomic::cmpxchg(NormalRegion, &_shadow_state, UnusedRegion, memory_order_relaxed) == UnusedRegion; + return Atomic::cmpxchg(&_shadow_state, UnusedRegion, NormalRegion, memory_order_relaxed) == UnusedRegion; } inline bool ParallelCompactData::RegionData::mark_shadow() { if (_shadow_state != UnusedRegion) return false; - return Atomic::cmpxchg(ShadowRegion, &_shadow_state, UnusedRegion, memory_order_relaxed) == UnusedRegion; + return Atomic::cmpxchg(&_shadow_state, UnusedRegion, ShadowRegion, memory_order_relaxed) == UnusedRegion; } inline void ParallelCompactData::RegionData::mark_filled() { - int old = Atomic::cmpxchg(FilledShadow, &_shadow_state, ShadowRegion, memory_order_relaxed); - assert(old == Shadow, "Fail to mark the region as filled"); + int old = Atomic::cmpxchg(&_shadow_state, ShadowRegion, FilledShadow, memory_order_relaxed); + assert(old == ShadowRegion, "Fail to mark the region as filled"); } inline bool ParallelCompactData::RegionData::mark_copied() { - return Atomic::cmpxchg(CopiedShadow, &_shadow_state, FilledShadow, memory_order_relaxed) == FilledShadow; + return Atomic::cmpxchg(&_shadow_state, FilledShadow, CopiedShadow, memory_order_relaxed) == FilledShadow; } void ParallelCompactData::RegionData::shadow_to_normal() { - int old = Atomic::cmpxchg(NormalRegion, &_shadow_state, ShadowRegion, memory_order_relaxed); - assert(old == Shadow, "Fail to mark the region as finish"); + int old = Atomic::cmpxchg(&_shadow_state, ShadowRegion, NormalRegion, memory_order_relaxed); + assert(old == ShadowRegion, "Fail to mark the region as finish"); } inline ParallelCompactData::RegionData*