about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-05-24 19:01:51 -0700
committerbors <bors@rust-lang.org>2013-05-24 19:01:51 -0700
commit5f90f1ca1d142dc408108a58e8ac48f10f2d719b (patch)
tree5cee1fbd9d7d22b258b97665e2ed62e4cbe29d41 /src
parent9a40c5c8ddb9055124cb12a710dc23b24276c9ac (diff)
parentff28bb7839a039641788436b21130ae2d378609b (diff)
downloadrust-5f90f1ca1d142dc408108a58e8ac48f10f2d719b.tar.gz
rust-5f90f1ca1d142dc408108a58e8ac48f10f2d719b.zip
auto merge of #6723 : osaut/rust/arc-remove-get, r=brson
* Remove clone and get functions from ARC.
* Update the tests and bench. 
Diffstat (limited to 'src')
-rw-r--r--src/libextra/arc.rs32
-rw-r--r--src/test/bench/graph500-bfs.rs14
-rw-r--r--src/test/compile-fail/no-capture-arc.rs6
-rw-r--r--src/test/compile-fail/no-reuse-move-arc.rs6
4 files changed, 24 insertions, 34 deletions
diff --git a/src/libextra/arc.rs b/src/libextra/arc.rs
index 648089a5524..123e7275935 100644
--- a/src/libextra/arc.rs
+++ b/src/libextra/arc.rs
@@ -107,7 +107,7 @@ pub impl<'self> Condvar<'self> {
  ****************************************************************************/
 
 /// An atomically reference counted wrapper for shared immutable state.
-struct ARC<T> { x: UnsafeAtomicRcBox<T> }
+pub struct ARC<T> { x: UnsafeAtomicRcBox<T> }
 
 /// Create an atomically reference counted wrapper.
 pub fn ARC<T:Const + Owned>(data: T) -> ARC<T> {
@@ -118,15 +118,12 @@ pub fn ARC<T:Const + Owned>(data: T) -> ARC<T> {
  * Access the underlying data in an atomically reference counted
  * wrapper.
  */
-pub fn get<'a, T:Const + Owned>(rc: &'a ARC<T>) -> &'a T {
-    rc.get()
-}
-
-impl<T:Const+Owned> ARC<T> {
-    pub fn get<'a>(&'a self) -> &'a T {
+pub impl<T:Const+Owned> ARC<T> {
+    fn get<'a>(&'a self) -> &'a T {
         unsafe { &*self.x.get_immut() }
     }
 }
+
 /**
  * Duplicate an atomically reference counted wrapper.
  *
@@ -134,13 +131,9 @@ impl<T:Const+Owned> ARC<T> {
  * object. However, one of the `arc` objects can be sent to another task,
  * allowing them to share the underlying data.
  */
-pub fn clone<T:Const + Owned>(rc: &ARC<T>) -> ARC<T> {
-    ARC { x: rc.x.clone() }
-}
-
 impl<T:Const + Owned> Clone for ARC<T> {
     fn clone(&self) -> ARC<T> {
-        clone(self)
+        ARC { x: self.x.clone() }
     }
 }
 
@@ -512,17 +505,14 @@ pub impl<'self, T:Const + Owned> RWReadMode<'self, T> {
 #[cfg(test)]
 mod tests {
     use core::prelude::*;
-
+    use core::cell::Cell;
     use arc::*;
     use arc;
 
-    use core::cell::Cell;
-    use core::task;
-
     #[test]
     fn manually_share_arc() {
         let v = ~[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
-        let arc_v = arc::ARC(v);
+        let arc_v = ARC(v);
 
         let (p, c) = comm::stream();
 
@@ -530,16 +520,16 @@ mod tests {
             let p = comm::PortSet::new();
             c.send(p.chan());
 
-            let arc_v = p.recv();
+            let arc_v : ARC<~[int]> = p.recv();
 
-            let v = copy *arc::get::<~[int]>(&arc_v);
+            let v = copy (*arc_v.get());
             assert_eq!(v[3], 4);
         };
 
         let c = p.recv();
-        c.send(arc::clone(&arc_v));
+        c.send(arc_v.clone());
 
-        assert_eq!((*arc::get(&arc_v))[2], 3);
+        assert_eq!(arc_v.get()[2], 3);
         assert_eq!(arc_v.get()[4], 5);
 
         info!(arc_v);
diff --git a/src/test/bench/graph500-bfs.rs b/src/test/bench/graph500-bfs.rs
index 734b5a0006f..06c8d0c145b 100644
--- a/src/test/bench/graph500-bfs.rs
+++ b/src/test/bench/graph500-bfs.rs
@@ -1,6 +1,6 @@
 // xfail-pretty
 
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -234,7 +234,7 @@ fn pbfs(graph: &arc::ARC<graph>, key: node_id) -> bfs_result {
         black(node_id)
     };
 
-    let graph_vec = arc::get(graph); // FIXME #3387 requires this temp
+    let graph_vec = graph.get(); // FIXME #3387 requires this temp
     let mut colors = do vec::from_fn(graph_vec.len()) |i| {
         if i as node_id == key {
             gray(key)
@@ -266,13 +266,13 @@ fn pbfs(graph: &arc::ARC<graph>, key: node_id) -> bfs_result {
 
         let color = arc::ARC(colors);
 
-        let color_vec = arc::get(&color); // FIXME #3387 requires this temp
+        let color_vec = color.get(); // FIXME #3387 requires this temp
         colors = do par::mapi(*color_vec) {
-            let colors = arc::clone(&color);
-            let graph = arc::clone(graph);
+            let colors = color.clone();
+            let graph = graph.clone();
             let result: ~fn(x: uint, y: &color) -> color = |i, c| {
-                let colors = arc::get(&colors);
-                let graph = arc::get(&graph);
+                let colors = colors.get();
+                let graph = graph.get();
                 match *c {
                   white => {
                     let i = i as node_id;
diff --git a/src/test/compile-fail/no-capture-arc.rs b/src/test/compile-fail/no-capture-arc.rs
index 132a5326a88..2a83e479e87 100644
--- a/src/test/compile-fail/no-capture-arc.rs
+++ b/src/test/compile-fail/no-capture-arc.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -18,11 +18,11 @@ fn main() {
     let arc_v = arc::ARC(v);
 
     do task::spawn() {
-        let v = *arc::get(&arc_v);
+        let v = arc_v.get();
         assert_eq!(v[3], 4);
     };
 
-    assert_eq!((*arc::get(&arc_v))[2], 3);
+    assert_eq!((arc_v.get())[2], 3);
 
     info!(arc_v);
 }
diff --git a/src/test/compile-fail/no-reuse-move-arc.rs b/src/test/compile-fail/no-reuse-move-arc.rs
index 8bed4e6da47..607127f2fee 100644
--- a/src/test/compile-fail/no-reuse-move-arc.rs
+++ b/src/test/compile-fail/no-reuse-move-arc.rs
@@ -1,4 +1,4 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -16,11 +16,11 @@ fn main() {
     let arc_v = arc::ARC(v);
 
     do task::spawn() { //~ NOTE `arc_v` moved into closure environment here
-        let v = *arc::get(&arc_v);
+        let v = arc_v.get();
         assert_eq!(v[3], 4);
     };
 
-    assert!((*arc::get(&arc_v))[2] == 3); //~ ERROR use of moved value: `arc_v`
+    assert_eq!((arc_v.get())[2], 3); //~ ERROR use of moved value: `arc_v`
 
     info!(arc_v);
 }