--- old/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp 2019-11-21 11:52:58.494743397 +0100 +++ new/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp 2019-11-21 11:52:58.234739149 +0100 @@ -207,7 +207,7 @@ return NULL; } - size_t cur_idx = Atomic::add(1u, &_hwm) - 1; + size_t cur_idx = Atomic::add(&_hwm, 1u) - 1; if (cur_idx >= _chunk_capacity) { return NULL; } @@ -280,7 +280,7 @@ void G1CMRootMemRegions::add(HeapWord* start, HeapWord* end) { assert_at_safepoint(); - size_t idx = Atomic::add((size_t)1, &_num_root_regions) - 1; + size_t idx = Atomic::add(&_num_root_regions, (size_t)1) - 1; assert(idx < _max_regions, "Trying to add more root MemRegions than there is space " SIZE_FORMAT, _max_regions); assert(start != NULL && end != NULL && start <= end, "Start (" PTR_FORMAT ") should be less or equal to " "end (" PTR_FORMAT ")", p2i(start), p2i(end)); @@ -308,7 +308,7 @@ return NULL; } - size_t claimed_index = Atomic::add((size_t)1, &_claimed_root_regions) - 1; + size_t claimed_index = Atomic::add(&_claimed_root_regions, (size_t)1) - 1; if (claimed_index < _num_root_regions) { return &_root_regions[claimed_index]; } @@ -1121,7 +1121,7 @@ virtual void work(uint worker_id) { G1UpdateRemSetTrackingBeforeRebuild update_cl(_g1h, _cm, &_cl); _g1h->heap_region_par_iterate_from_worker_offset(&update_cl, &_hrclaimer, worker_id); - Atomic::add(update_cl.num_selected_for_rebuild(), &_total_selected_for_rebuild); + Atomic::add(&_total_selected_for_rebuild, update_cl.num_selected_for_rebuild()); } uint total_selected_for_rebuild() const { return _total_selected_for_rebuild; }