about summary refs log tree commit diff
path: root/src/libstd/rt
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2013-12-05 17:34:37 -0800
committerPatrick Walton <pcwalton@mimiga.net>2013-12-10 15:13:13 -0800
commit89e1db3d6ce37946afd7115dfcce510261537a85 (patch)
tree4ae3327b50138f2f416165a99576372676c22643 /src/libstd/rt
parent6bd80f74505a3eb7c44753c69cbe253ff566d5c1 (diff)
downloadrust-89e1db3d6ce37946afd7115dfcce510261537a85.tar.gz
rust-89e1db3d6ce37946afd7115dfcce510261537a85.zip
libstd: Change `atomically` to use RAII.
Diffstat (limited to 'src/libstd/rt')
-rw-r--r--src/libstd/rt/comm.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/libstd/rt/comm.rs b/src/libstd/rt/comm.rs
index d6024b7abea..2b1e7865a73 100644
--- a/src/libstd/rt/comm.rs
+++ b/src/libstd/rt/comm.rs
@@ -565,7 +565,7 @@ impl<'self, T: Send> SelectPortInner<T> for &'self Port<T> {
 impl<'self, T: Send> SelectPort<T> for &'self Port<T> { }
 
 pub struct SharedChan<T> {
-    // Just like Chan, but a shared AtomicOption instead of Cell
+    // Just like Chan, but a shared AtomicOption
     priv next: UnsafeArc<AtomicOption<StreamChanOne<T>>>
 }
 
@@ -716,7 +716,6 @@ mod test {
     use super::*;
     use option::*;
     use rt::test::*;
-    use cell::Cell;
     use num::Times;
     use rt::util;
 
@@ -1113,7 +1112,7 @@ mod test {
 
     #[test]
     fn send_deferred() {
-        use unstable::sync::atomically;
+        use unstable::sync::atomic;
 
         // Tests no-rescheduling of send_deferred on all types of channels.
         do run_in_newsched_task {
@@ -1129,15 +1128,12 @@ mod test {
             let p_mp = mp.clone();
             do spawntask { p_mp.recv(); }
 
-            let cs = Cell::new((cone, cstream, cshared, mp));
             unsafe {
-                atomically(|| {
-                    let (cone, cstream, cshared, mp) = cs.take();
-                    cone.send_deferred(());
-                    cstream.send_deferred(());
-                    cshared.send_deferred(());
-                    mp.send_deferred(());
-                })
+                let _guard = atomic();
+                cone.send_deferred(());
+                cstream.send_deferred(());
+                cshared.send_deferred(());
+                mp.send_deferred(());
             }
         }
     }