< prev index next >
src/hotspot/share/gc/g1/g1RemSet.cpp
Print this page
*** 175,185 ****
void add_dirty_region(uint region) {
if (_contains[region]) {
return;
}
! bool marked_as_dirty = Atomic::cmpxchg(true, &_contains[region], false) == false;
if (marked_as_dirty) {
uint allocated = Atomic::add(&_cur_idx, 1u) - 1;
_buffer[allocated] = region;
}
}
--- 175,185 ----
void add_dirty_region(uint region) {
if (_contains[region]) {
return;
}
! bool marked_as_dirty = Atomic::cmpxchg(&_contains[region], false, true) == false;
if (marked_as_dirty) {
uint allocated = Atomic::add(&_cur_idx, 1u) - 1;
_buffer[allocated] = region;
}
}
*** 435,445 ****
inline bool claim_collection_set_region(uint region) {
assert(region < _max_regions, "Tried to access invalid region %u", region);
if (_collection_set_iter_state[region]) {
return false;
}
! return !Atomic::cmpxchg(true, &_collection_set_iter_state[region], false);
}
bool has_cards_to_scan(uint region) {
assert(region < _max_regions, "Tried to access invalid region %u", region);
return _card_table_scan_state[region] < HeapRegion::CardsPerRegion;
--- 435,445 ----
inline bool claim_collection_set_region(uint region) {
assert(region < _max_regions, "Tried to access invalid region %u", region);
if (_collection_set_iter_state[region]) {
return false;
}
! return !Atomic::cmpxchg(&_collection_set_iter_state[region], false, true);
}
bool has_cards_to_scan(uint region) {
assert(region < _max_regions, "Tried to access invalid region %u", region);
return _card_table_scan_state[region] < HeapRegion::CardsPerRegion;
*** 1135,1145 ****
// We schedule flushing the remembered sets of humongous fast reclaim candidates
// onto the card table first to allow the remaining parallelized tasks hide it.
if (_initial_evacuation &&
p->fast_reclaim_humongous_candidates() > 0 &&
!_fast_reclaim_handled &&
! !Atomic::cmpxchg(true, &_fast_reclaim_handled, false)) {
G1GCParPhaseTimesTracker x(p, G1GCPhaseTimes::MergeER, worker_id);
G1FlushHumongousCandidateRemSets cl(_scan_state);
g1h->heap_region_iterate(&cl);
--- 1135,1145 ----
// We schedule flushing the remembered sets of humongous fast reclaim candidates
// onto the card table first to allow the remaining parallelized tasks hide it.
if (_initial_evacuation &&
p->fast_reclaim_humongous_candidates() > 0 &&
!_fast_reclaim_handled &&
! !Atomic::cmpxchg(&_fast_reclaim_handled, false, true)) {
G1GCParPhaseTimesTracker x(p, G1GCPhaseTimes::MergeER, worker_id);
G1FlushHumongousCandidateRemSets cl(_scan_state);
g1h->heap_region_iterate(&cl);
< prev index next >