--- old/src/hotspot/share/gc/parallel/mutableSpace.cpp 2019-11-21 11:55:04.056849076 +0100 +++ new/src/hotspot/share/gc/parallel/mutableSpace.cpp 2019-11-21 11:55:03.800844748 +0100 @@ -194,7 +194,7 @@ HeapWord* obj = top(); if (pointer_delta(end(), obj) >= size) { HeapWord* new_top = obj + size; - HeapWord* result = Atomic::cmpxchg(new_top, top_addr(), obj); + HeapWord* result = Atomic::cmpxchg(top_addr(), obj, new_top); // result can be one of two: // the old top value: the exchange succeeded // otherwise: the new value of the top is returned. @@ -213,7 +213,7 @@ // Try to deallocate previous allocation. Returns true upon success. bool MutableSpace::cas_deallocate(HeapWord *obj, size_t size) { HeapWord* expected_top = obj + size; - return Atomic::cmpxchg(obj, top_addr(), expected_top) == expected_top; + return Atomic::cmpxchg(top_addr(), expected_top, obj) == expected_top; } void MutableSpace::oop_iterate(OopIterateClosure* cl) {