< prev index next >

src/hotspot/share/jfr/recorder/storage/jfrBuffer.cpp

Print this page

        

*** 102,112 **** } const u1* JfrBuffer::concurrent_top() const { do { const u1* current_top = stable_top(); ! if (Atomic::cmpxchg(MUTEX_CLAIM, &_top, current_top) == current_top) { return current_top; } } while (true); } --- 102,112 ---- } const u1* JfrBuffer::concurrent_top() const { do { const u1* current_top = stable_top(); ! if (Atomic::cmpxchg(&_top, current_top, MUTEX_CLAIM) == current_top) { return current_top; } } while (true); }
*** 126,142 **** void JfrBuffer::acquire(const void* id) { assert(id != NULL, "invariant"); const void* current_id; do { current_id = Atomic::load(&_identity); ! } while (current_id != NULL || Atomic::cmpxchg(id, &_identity, current_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; } void JfrBuffer::release() { OrderAccess::storestore(); _identity = NULL; --- 126,142 ---- void JfrBuffer::acquire(const void* id) { assert(id != NULL, "invariant"); const void* current_id; do { current_id = Atomic::load(&_identity); ! } 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(&_identity, current_id, id) == current_id; } void JfrBuffer::release() { OrderAccess::storestore(); _identity = NULL;
< prev index next >