about summary refs log tree commit diff
path: root/src/libstd/sync.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-09-04 17:22:09 -0700
committerBrian Anderson <banderson@mozilla.com>2012-09-04 17:27:03 -0700
commiteb0cf3a715cad7d0ad6d2407499356ae9dffaa7d (patch)
tree9e10313302bbba7e39886fb3710944ffc0ec0cc5 /src/libstd/sync.rs
parent268850f67b8e535dca2a8f29c717eafb4bd54e13 (diff)
std: Remove struct ctors
Diffstat (limited to 'src/libstd/sync.rs')
-rw-r--r--src/libstd/sync.rs46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/libstd/sync.rs b/src/libstd/sync.rs
index d11c3419f7a..2149d179b97 100644
--- a/src/libstd/sync.rs
+++ b/src/libstd/sync.rs
@@ -154,16 +154,28 @@ impl &Sem<~[mut Waitqueue]> {
 #[doc(hidden)]
 struct SemRelease {
     sem: &Sem<()>;
-    new(sem: &Sem<()>) { self.sem = sem; }
     drop { self.sem.release(); }
 }
+
+fn SemRelease(sem: &r/Sem<()>) -> SemRelease/&r {
+    SemRelease {
+        sem: sem
+    }
+}
+
 #[doc(hidden)]
 struct SemAndSignalRelease {
     sem: &Sem<~[mut Waitqueue]>;
-    new(sem: &Sem<~[mut Waitqueue]>) { self.sem = sem; }
     drop { self.sem.release(); }
 }
 
+fn SemAndSignalRelease(sem: &r/Sem<~[mut Waitqueue]>)
+    -> SemAndSignalRelease/&r {
+    SemAndSignalRelease {
+        sem: sem
+    }
+}
+
 /// A mechanism for atomic-unlock-and-deschedule blocking and signalling.
 struct Condvar { priv sem: &Sem<~[mut Waitqueue]>; drop { } }
 
@@ -234,7 +246,6 @@ impl &Condvar {
         // bounded in when it gets released, this shouldn't hang forever.
         struct SemAndSignalReacquire {
             sem: &Sem<~[mut Waitqueue]>;
-            new(sem: &Sem<~[mut Waitqueue]>) { self.sem = sem; }
             drop unsafe {
                 // Needs to succeed, instead of itself dying.
                 do task::unkillable {
@@ -242,6 +253,14 @@ impl &Condvar {
                 }
             }
         }
+
+        fn SemAndSignalReacquire(sem: &r/Sem<~[mut Waitqueue]>)
+            -> SemAndSignalReacquire/&r {
+            SemAndSignalReacquire {
+                sem: sem
+            }
+        }
+        
     }
 
     /// Wake up a blocked task. Returns false if there was no blocked task.
@@ -567,7 +586,6 @@ impl &RWlock {
 #[doc(hidden)]
 struct RWlockReleaseRead {
     lock: &RWlock;
-    new(lock: &RWlock) { self.lock = lock; }
     drop unsafe {
         do task::unkillable {
             let mut last_reader = false;
@@ -587,11 +605,16 @@ struct RWlockReleaseRead {
     }
 }
 
+fn RWlockReleaseRead(lock: &r/RWlock) -> RWlockReleaseRead/&r {
+    RWlockReleaseRead {
+        lock: lock
+    }
+}
+
 // FIXME(#3136) should go inside of downgrade()
 #[doc(hidden)]
 struct RWlockReleaseDowngrade {
     lock: &RWlock;
-    new(lock: &RWlock) { self.lock = lock; }
     drop unsafe {
         do task::unkillable {
             let mut writer_or_last_reader = false;
@@ -618,6 +641,12 @@ struct RWlockReleaseDowngrade {
     }
 }
 
+fn RWlockReleaseDowngrade(lock: &r/RWlock) -> RWlockReleaseDowngrade/&r {
+    RWlockReleaseDowngrade {
+        lock: lock
+    }
+}
+
 /// The "write permission" token used for rwlock.write_downgrade().
 struct RWlockWriteMode { /* priv */ lock: &RWlock; drop { } }
 /// The "read permission" token used for rwlock.write_downgrade().
@@ -929,9 +958,14 @@ mod tests {
         }
         struct SendOnFailure {
             c: pipes::Chan<()>;
-            new(+c: pipes::Chan<()>) { self.c = c; }
             drop { self.c.send(()); }
         }
+
+        fn SendOnFailure(+c: pipes::Chan<()>) -> SendOnFailure {
+            SendOnFailure {
+                c: c
+            }
+        }
     }
     #[test]
     fn test_mutex_cond_signal_on_0() {