< prev index next >
src/hotspot/share/gc/parallel/psParallelCompact.hpp
Print this page
rev 57190 : [mq]: shadow-regions.5
rev 57192 : imported patch shadow-regions-final-fixes
*** 628,657 ****
const region_sz_t old = Atomic::cmpxchg(&_dc_and_los, los, dc_claimed | los);
return old == los;
}
inline bool ParallelCompactData::RegionData::mark_normal() {
! return Atomic::cmpxchg(NormalRegion, &_shadow_state, UnusedRegion, 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;
}
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");
}
inline bool ParallelCompactData::RegionData::mark_copied() {
! return Atomic::cmpxchg(CopiedShadow, &_shadow_state, FilledShadow, 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");
}
inline ParallelCompactData::RegionData*
ParallelCompactData::region(size_t region_idx) const
{
--- 628,657 ----
const region_sz_t old = Atomic::cmpxchg(&_dc_and_los, los, dc_claimed | los);
return old == los;
}
inline bool ParallelCompactData::RegionData::mark_normal() {
! 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(&_shadow_state, UnusedRegion, ShadowRegion, memory_order_relaxed) == UnusedRegion;
}
inline void ParallelCompactData::RegionData::mark_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(&_shadow_state, FilledShadow, CopiedShadow, memory_order_relaxed) == FilledShadow;
}
void ParallelCompactData::RegionData::shadow_to_normal() {
! int old = Atomic::cmpxchg(&_shadow_state, ShadowRegion, NormalRegion, memory_order_relaxed);
! assert(old == ShadowRegion, "Fail to mark the region as finish");
}
inline ParallelCompactData::RegionData*
ParallelCompactData::region(size_t region_idx) const
{
< prev index next >