< prev index next >

src/hotspot/share/gc/parallel/psParallelCompact.hpp

Print this page

        

*** 534,544 **** inline void ParallelCompactData::RegionData::decrement_destination_count() { assert(_dc_and_los < dc_claimed, "already claimed"); assert(_dc_and_los >= dc_one, "count would go negative"); ! Atomic::add(dc_mask, &_dc_and_los); } inline HeapWord* ParallelCompactData::RegionData::data_location() const { DEBUG_ONLY(return _data_location;) --- 534,544 ---- inline void ParallelCompactData::RegionData::decrement_destination_count() { assert(_dc_and_los < dc_claimed, "already claimed"); assert(_dc_and_los >= dc_one, "count would go negative"); ! Atomic::add(&_dc_and_los, dc_mask); } inline HeapWord* ParallelCompactData::RegionData::data_location() const { DEBUG_ONLY(return _data_location;)
*** 574,600 **** } inline void ParallelCompactData::RegionData::add_live_obj(size_t words) { assert(words <= (size_t)los_mask - live_obj_size(), "overflow"); ! Atomic::add(static_cast<region_sz_t>(words), &_dc_and_los); } inline void ParallelCompactData::RegionData::set_highest_ref(HeapWord* addr) { #ifdef ASSERT HeapWord* tmp = _highest_ref; while (addr > tmp) { ! tmp = Atomic::cmpxchg(addr, &_highest_ref, tmp); } #endif // #ifdef ASSERT } inline bool ParallelCompactData::RegionData::claim() { const region_sz_t los = static_cast<region_sz_t>(live_obj_size()); ! const region_sz_t old = Atomic::cmpxchg(dc_claimed | los, &_dc_and_los, los); return old == los; } inline ParallelCompactData::RegionData* ParallelCompactData::region(size_t region_idx) const --- 574,600 ---- } inline void ParallelCompactData::RegionData::add_live_obj(size_t words) { assert(words <= (size_t)los_mask - live_obj_size(), "overflow"); ! Atomic::add(&_dc_and_los, static_cast<region_sz_t>(words)); } inline void ParallelCompactData::RegionData::set_highest_ref(HeapWord* addr) { #ifdef ASSERT HeapWord* tmp = _highest_ref; while (addr > tmp) { ! tmp = Atomic::cmpxchg(&_highest_ref, tmp, addr); } #endif // #ifdef ASSERT } inline bool ParallelCompactData::RegionData::claim() { const region_sz_t los = static_cast<region_sz_t>(live_obj_size()); ! const region_sz_t old = Atomic::cmpxchg(&_dc_and_los, los, dc_claimed | los); return old == los; } inline ParallelCompactData::RegionData* ParallelCompactData::region(size_t region_idx) const
< prev index next >