< 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 >