equal
deleted
inserted
replaced
582 inline void ParallelCompactData::RegionData::set_highest_ref(HeapWord* addr) |
582 inline void ParallelCompactData::RegionData::set_highest_ref(HeapWord* addr) |
583 { |
583 { |
584 #ifdef ASSERT |
584 #ifdef ASSERT |
585 HeapWord* tmp = _highest_ref; |
585 HeapWord* tmp = _highest_ref; |
586 while (addr > tmp) { |
586 while (addr > tmp) { |
587 tmp = Atomic::cmpxchg(addr, &_highest_ref, tmp); |
587 tmp = Atomic::cmpxchg(&_highest_ref, tmp, addr); |
588 } |
588 } |
589 #endif // #ifdef ASSERT |
589 #endif // #ifdef ASSERT |
590 } |
590 } |
591 |
591 |
592 inline bool ParallelCompactData::RegionData::claim() |
592 inline bool ParallelCompactData::RegionData::claim() |
593 { |
593 { |
594 const region_sz_t los = static_cast<region_sz_t>(live_obj_size()); |
594 const region_sz_t los = static_cast<region_sz_t>(live_obj_size()); |
595 const region_sz_t old = Atomic::cmpxchg(dc_claimed | los, &_dc_and_los, los); |
595 const region_sz_t old = Atomic::cmpxchg(&_dc_and_los, los, dc_claimed | los); |
596 return old == los; |
596 return old == los; |
597 } |
597 } |
598 |
598 |
599 inline ParallelCompactData::RegionData* |
599 inline ParallelCompactData::RegionData* |
600 ParallelCompactData::region(size_t region_idx) const |
600 ParallelCompactData::region(size_t region_idx) const |