--- old/src/hotspot/share/jfr/recorder/storage/jfrBuffer.cpp 2019-11-21 11:55:24.049187087 +0100 +++ new/src/hotspot/share/jfr/recorder/storage/jfrBuffer.cpp 2019-11-21 11:55:23.793182759 +0100 @@ -104,7 +104,7 @@ const u1* JfrBuffer::concurrent_top() const { do { const u1* current_top = stable_top(); - if (Atomic::cmpxchg(MUTEX_CLAIM, &_top, current_top) == current_top) { + if (Atomic::cmpxchg(&_top, current_top, MUTEX_CLAIM) == current_top) { return current_top; } } while (true); @@ -128,13 +128,13 @@ const void* current_id; do { current_id = Atomic::load(&_identity); - } while (current_id != NULL || Atomic::cmpxchg(id, &_identity, current_id) != current_id); + } while (current_id != NULL || Atomic::cmpxchg(&_identity, current_id, id) != current_id); } bool JfrBuffer::try_acquire(const void* id) { assert(id != NULL, "invariant"); const void* const current_id = Atomic::load(&_identity); - return current_id == NULL && Atomic::cmpxchg(id, &_identity, current_id) == current_id; + return current_id == NULL && Atomic::cmpxchg(&_identity, current_id, id) == current_id; } void JfrBuffer::release() {