< prev index next >
src/hotspot/share/jfr/recorder/storage/jfrBuffer.cpp
Print this page
@@ -102,11 +102,11 @@
}
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);
}
@@ -126,17 +126,17 @@
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);
+ } 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() {
OrderAccess::storestore();
_identity = NULL;
< prev index next >