< 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 >