From 13d73e99d6a88400da81ec6a1177a75a81ffe9ca Mon Sep 17 00:00:00 2001 From: Cadence Marseille Date: Sun, 16 Mar 2014 18:03:58 -0400 Subject: Remove AtomicFlag fixes #12943 --- src/libstd/sync/atomics.rs | 47 ++++++---------------------------------------- 1 file changed, 6 insertions(+), 41 deletions(-) (limited to 'src/libstd/sync') diff --git a/src/libstd/sync/atomics.rs b/src/libstd/sync/atomics.rs index b38a5aed16f..86efa0875dc 100644 --- a/src/libstd/sync/atomics.rs +++ b/src/libstd/sync/atomics.rs @@ -27,14 +27,6 @@ use std::kinds::marker; use option::{Option,Some,None}; use ops::Drop; -/** - * A simple atomic flag, that can be set and cleared. The most basic atomic type. - */ -pub struct AtomicFlag { - priv v: int, - priv nopod: marker::NoPod -} - /** * An atomic boolean type. */ @@ -92,36 +84,11 @@ pub enum Ordering { SeqCst } -pub static INIT_ATOMIC_FLAG : AtomicFlag = AtomicFlag { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_BOOL : AtomicBool = AtomicBool { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_INT : AtomicInt = AtomicInt { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_UINT : AtomicUint = AtomicUint { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_U64 : AtomicU64 = AtomicU64 { v: 0, nopod: marker::NoPod }; -impl AtomicFlag { - - pub fn new() -> AtomicFlag { - AtomicFlag { v: 0, nopod: marker::NoPod} - } - - /** - * Clears the atomic flag - */ - #[inline] - pub fn clear(&mut self, order: Ordering) { - unsafe {atomic_store(&mut self.v, 0, order)} - } - - /** - * Sets the flag if it was previously unset, returns the previous value of the - * flag. - */ - #[inline] - pub fn test_and_set(&mut self, order: Ordering) -> bool { - unsafe { atomic_compare_and_swap(&mut self.v, 0, 1, order) > 0 } - } -} - impl AtomicBool { pub fn new(v: bool) -> AtomicBool { AtomicBool { v: if v { 1 } else { 0 }, nopod: marker::NoPod } @@ -539,13 +506,13 @@ mod test { use super::*; #[test] - fn flag() { - let mut flg = AtomicFlag::new(); - assert!(!flg.test_and_set(SeqCst)); - assert!(flg.test_and_set(SeqCst)); + fn bool_() { + let mut a = AtomicBool::new(false); + assert_eq!(a.compare_and_swap(false, true, SeqCst), false); + assert_eq!(a.compare_and_swap(false, true, SeqCst), true); - flg.clear(SeqCst); - assert!(!flg.test_and_set(SeqCst)); + a.store(false, SeqCst); + assert_eq!(a.compare_and_swap(false, true, SeqCst), false); } #[test] @@ -595,7 +562,6 @@ mod test { assert_eq!(a.load(SeqCst),false); } - static mut S_FLAG : AtomicFlag = INIT_ATOMIC_FLAG; static mut S_BOOL : AtomicBool = INIT_ATOMIC_BOOL; static mut S_INT : AtomicInt = INIT_ATOMIC_INT; static mut S_UINT : AtomicUint = INIT_ATOMIC_UINT; @@ -603,7 +569,6 @@ mod test { #[test] fn static_init() { unsafe { - assert!(!S_FLAG.test_and_set(SeqCst)); assert!(!S_BOOL.load(SeqCst)); assert!(S_INT.load(SeqCst) == 0); assert!(S_UINT.load(SeqCst) == 0); -- cgit 1.4.1-3-g733a5