about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-01-27 22:41:25 -0800
committerAlex Crichton <alex@alexcrichton.com>2014-02-03 12:05:16 -0800
commitacacfb20fd34162cfba5a4e7b5f1447e0403fa50 (patch)
tree0790d82726f49abc6d37b8ac5c8ca0fbec7e0685 /src
parent984727ff87bb8a9f345ababf473d1141f9e05c08 (diff)
downloadrust-acacfb20fd34162cfba5a4e7b5f1447e0403fa50.tar.gz
rust-acacfb20fd34162cfba5a4e7b5f1447e0403fa50.zip
Various bug fixes and rebase conflicts
Diffstat (limited to 'src')
-rw-r--r--src/libextra/sync/mutex.rs11
-rw-r--r--src/libextra/sync/one.rs6
-rw-r--r--src/libgreen/sched.rs3
-rw-r--r--src/libnative/io/net.rs19
-rw-r--r--src/libnative/io/timer_helper.rs12
-rw-r--r--src/librustc/back/link.rs1
-rw-r--r--src/libstd/sync/atomics.rs2
7 files changed, 24 insertions, 30 deletions
diff --git a/src/libextra/sync/mutex.rs b/src/libextra/sync/mutex.rs
index 6fb436d3528..7ea98c0741a 100644
--- a/src/libextra/sync/mutex.rs
+++ b/src/libextra/sync/mutex.rs
@@ -89,13 +89,6 @@ pub static NATIVE_BLOCKED: uint = 1 << 2;
 /// let guard = m.lock();
 /// // do some work
 /// drop(guard); // unlock the lock
-///
-/// {
-///     let _g = m.lock();
-///     // do some work in a scope
-/// }
-///
-/// // now the mutex is unlocked
 /// ```
 pub struct Mutex {
     priv lock: StaticMutex,
@@ -541,9 +534,9 @@ mod test {
         let (p, c) = SharedChan::new();
         for _ in range(0, N) {
             let c2 = c.clone();
-            do native::task::spawn { inc(); c2.send(()); }
+            native::task::spawn(proc() { inc(); c2.send(()); });
             let c2 = c.clone();
-            do spawn { inc(); c2.send(()); }
+            spawn(proc() { inc(); c2.send(()); });
         }
 
         drop(c);
diff --git a/src/libextra/sync/one.rs b/src/libextra/sync/one.rs
index 6dc1cbee6dc..826955d93e8 100644
--- a/src/libextra/sync/one.rs
+++ b/src/libextra/sync/one.rs
@@ -30,7 +30,7 @@ use sync::mutex::{StaticMutex, MUTEX_INIT};
 /// # Example
 ///
 /// ```rust
-/// use std::unstable::mutex::{Once, ONCE_INIT};
+/// use extra::sync::one::{Once, ONCE_INIT};
 ///
 /// static mut START: Once = ONCE_INIT;
 /// unsafe {
@@ -140,7 +140,7 @@ mod test {
         let (p, c) = SharedChan::new();
         for _ in range(0, 10) {
             let c = c.clone();
-            do spawn {
+            spawn(proc() {
                 for _ in range(0, 4) { task::deschedule() }
                 unsafe {
                     o.doit(|| {
@@ -150,7 +150,7 @@ mod test {
                     assert!(run);
                 }
                 c.send(());
-            }
+            });
         }
 
         unsafe {
diff --git a/src/libgreen/sched.rs b/src/libgreen/sched.rs
index da4f0a3b68a..c8b84d445db 100644
--- a/src/libgreen/sched.rs
+++ b/src/libgreen/sched.rs
@@ -1470,7 +1470,6 @@ mod test {
                     LOCK.signal();   // wakeup waiting scheduler
                     LOCK.wait();     // wait for them to grab the lock
                     LOCK.unlock();
-                    LOCK.destroy();  // now we're guaranteed they have no locks
                 }
             })));
             drop(handle);
@@ -1478,6 +1477,6 @@ mod test {
             fin_po.recv();
             pool.shutdown();
         }
-
+        unsafe { LOCK.destroy(); }
     }
 }
diff --git a/src/libnative/io/net.rs b/src/libnative/io/net.rs
index cf0b1f05ebd..dd916c8f3c4 100644
--- a/src/libnative/io/net.rs
+++ b/src/libnative/io/net.rs
@@ -204,17 +204,16 @@ pub fn init() {
         use std::unstable::mutex::{Mutex, MUTEX_INIT};
         static mut INITIALIZED: bool = false;
         static mut LOCK: Mutex = MUTEX_INIT;
-        unsafe {
-            LOCK.lock();
-            if !INITIALIZED {
-                let mut data: WSADATA = intrinsics::init();
-                let ret = WSAStartup(0x202,      // version 2.2
-                                     &mut data);
-                assert_eq!(ret, 0);
-                INITIALIZED = true;
-            }
-            LOCK.unlock();
+
+        LOCK.lock();
+        if !INITIALIZED {
+            let mut data: WSADATA = intrinsics::init();
+            let ret = WSAStartup(0x202,      // version 2.2
+                                 &mut data);
+            assert_eq!(ret, 0);
+            INITIALIZED = true;
         }
+        LOCK.unlock();
     }
 }
 
diff --git a/src/libnative/io/timer_helper.rs b/src/libnative/io/timer_helper.rs
index 7311be46e8b..c00b0efadb5 100644
--- a/src/libnative/io/timer_helper.rs
+++ b/src/libnative/io/timer_helper.rs
@@ -22,7 +22,7 @@
 
 use std::cast;
 use std::rt;
-use std::unstable::mutex::{Once, ONCE_INIT};
+use std::unstable::mutex::{Mutex, MUTEX_INIT};
 
 use bookkeeping;
 use io::timer::{Req, Shutdown};
@@ -37,10 +37,12 @@ static mut HELPER_CHAN: *mut SharedChan<Req> = 0 as *mut SharedChan<Req>;
 static mut HELPER_SIGNAL: imp::signal = 0 as imp::signal;
 
 pub fn boot(helper: fn(imp::signal, Port<Req>)) {
-    static mut INIT: Once = ONCE_INIT;
+    static mut LOCK: Mutex = MUTEX_INIT;
+    static mut INITIALIZED: bool = false;
 
     unsafe {
-        INIT.doit(|| {
+        LOCK.lock();
+        if !INITIALIZED {
             let (msgp, msgc) = SharedChan::new();
             HELPER_CHAN = cast::transmute(~msgc);
             let (receive, send) = imp::new();
@@ -52,7 +54,9 @@ pub fn boot(helper: fn(imp::signal, Port<Req>)) {
             });
 
             rt::at_exit(proc() { shutdown() });
-        })
+            INITIALIZED = true;
+        }
+        LOCK.unlock();
     }
 }
 
diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs
index 8cdf79b274d..e224a06818a 100644
--- a/src/librustc/back/link.rs
+++ b/src/librustc/back/link.rs
@@ -96,7 +96,6 @@ pub mod write {
     use lib::llvm::llvm;
     use lib::llvm::{ModuleRef, TargetMachineRef, PassManagerRef};
     use lib;
-    use syntax::abi;
     use util::common::time;
     use syntax::abi;
 
diff --git a/src/libstd/sync/atomics.rs b/src/libstd/sync/atomics.rs
index 6ce285152de..fb62bed9ed0 100644
--- a/src/libstd/sync/atomics.rs
+++ b/src/libstd/sync/atomics.rs
@@ -384,7 +384,7 @@ impl<T> AtomicOption<T> {
     }
 
     #[cfg(stage0)]
-    pub fn empty() -> AtomicOption<T> { AtomicOption { p: 0 as *mut c_void } }
+    pub fn empty() -> AtomicOption<T> { AtomicOption { p: 0 as *mut u8 } }
     #[cfg(not(stage0))]
     pub fn empty() -> AtomicOption<T> { AtomicOption { p: 0 } }