]> git.lizzy.rs Git - rust.git/commitdiff
Replace compare_exchange with swap
authorStjepan Glavina <stjepang@gmail.com>
Fri, 7 Apr 2017 16:04:15 +0000 (18:04 +0200)
committerStjepan Glavina <stjepang@gmail.com>
Fri, 7 Apr 2017 16:04:15 +0000 (18:04 +0200)
src/libcore/sync/atomic.rs

index dd0069502dee757d8fe56a404066ca0423f9317f..a4050f271eb99b30a08eb91961680bf468444e28 100644 (file)
@@ -539,20 +539,15 @@ pub fn fetch_nand(&self, val: bool, order: Ordering) -> bool {
         // We can't use atomic_nand here because it can result in a bool with
         // an invalid value. This happens because the atomic operation is done
         // with an 8-bit integer internally, which would set the upper 7 bits.
-        // So we just use fetch_xor or compare_exchange instead.
+        // So we just use fetch_xor or swap instead.
         if val {
             // !(x & true) == !x
             // We must invert the bool.
             self.fetch_xor(true, order)
         } else {
             // !(x & false) == true
-            // We must set the bool to true. Instead of delegating to swap or fetch_or, use
-            // compare_exchange instead in order to avoid unnecessary writes to memory, which
-            // might minimize cache-coherence traffic.
-            match self.compare_exchange(false, true, order, Ordering::Relaxed) {
-                Ok(_) => false,
-                Err(_) => true,
-            }
+            // We must set the bool to true.
+            self.swap(true, order)
         }
     }