From d07cd175daa24e25ce287ae013e5b6691c39dc36 Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Wed, 1 Oct 2014 00:00:59 +0300 Subject: [PATCH] std: remove gc module. --- src/libstd/gc.rs | 156 ---------------------------------------------- src/libstd/lib.rs | 4 -- 2 files changed, 160 deletions(-) delete mode 100644 src/libstd/gc.rs diff --git a/src/libstd/gc.rs b/src/libstd/gc.rs deleted file mode 100644 index ecef8e9ed902..000000000000 --- a/src/libstd/gc.rs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2013 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -/*! Task-local garbage-collected boxes - -The `Gc` type provides shared ownership of an immutable value. Destruction is not deterministic, and -will occur some time between every `Gc` handle being gone and the end of the task. The garbage -collector is task-local so `Gc` is not sendable. - -*/ - -#![experimental] -#![allow(experimental)] - -use clone::Clone; -use cmp::{Ord, PartialOrd, Ordering, Eq, PartialEq}; -use default::Default; -use fmt; -use hash; -use kinds::marker; -use option::Option; -use ops::Deref; -use raw; - -/// Immutable garbage-collected pointer type -#[lang="gc"] -#[experimental = "Gc is currently based on reference-counting and will not collect cycles until \ - task annihilation. For now, cycles need to be broken manually by using `Rc` \ - with a non-owning `Weak` pointer. A tracing garbage collector is planned."] -pub struct Gc { - _ptr: *mut T, - marker: marker::NoSend, -} - -#[unstable] -impl Clone for Gc { - /// Clone the pointer only - #[inline] - fn clone(&self) -> Gc { *self } -} - -/// An value that represents the task-local managed heap. -/// -/// Use this like `let foo = box(GC) Bar::new(...);` -#[lang="managed_heap"] -#[cfg(not(test))] -pub static GC: () = (); - -impl PartialEq for Gc { - #[inline] - fn eq(&self, other: &Gc) -> bool { *(*self) == *(*other) } - #[inline] - fn ne(&self, other: &Gc) -> bool { *(*self) != *(*other) } -} -impl PartialOrd for Gc { - #[inline] - fn partial_cmp(&self, other: &Gc) -> Option { - (**self).partial_cmp(&**other) - } - #[inline] - fn lt(&self, other: &Gc) -> bool { *(*self) < *(*other) } - #[inline] - fn le(&self, other: &Gc) -> bool { *(*self) <= *(*other) } - #[inline] - fn ge(&self, other: &Gc) -> bool { *(*self) >= *(*other) } - #[inline] - fn gt(&self, other: &Gc) -> bool { *(*self) > *(*other) } -} -impl Ord for Gc { - #[inline] - fn cmp(&self, other: &Gc) -> Ordering { (**self).cmp(&**other) } -} -impl Eq for Gc {} - -impl Deref for Gc { - fn deref<'a>(&'a self) -> &'a T { &**self } -} - -impl Default for Gc { - fn default() -> Gc { - box(GC) Default::default() - } -} - -impl raw::Repr<*const raw::GcBox> for Gc {} - -impl + 'static> hash::Hash for Gc { - fn hash(&self, s: &mut S) { - (**self).hash(s) - } -} - -impl fmt::Show for Gc { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - (**self).fmt(f) - } -} - -#[cfg(test)] -mod tests { - use prelude::*; - use super::*; - use cell::RefCell; - - #[test] - fn test_managed_clone() { - let a = box(GC) 5i; - let b: Gc = a.clone(); - assert!(a == b); - } - - #[test] - fn test_clone() { - let x = Gc::new(RefCell::new(5)); - let y = x.clone(); - *x.borrow().borrow_mut() = 20; - assert_eq!(*y.borrow().borrow(), 20); - } - - #[test] - fn test_simple() { - let x = Gc::new(5); - assert_eq!(*x.borrow(), 5); - } - - #[test] - fn test_simple_clone() { - let x = Gc::new(5); - let y = x.clone(); - assert_eq!(*x.borrow(), 5); - assert_eq!(*y.borrow(), 5); - } - - #[test] - fn test_ptr_eq() { - let x = Gc::new(5); - let y = x.clone(); - let z = Gc::new(7); - assert!(x.ptr_eq(&x)); - assert!(x.ptr_eq(&y)); - assert!(!x.ptr_eq(&z)); - } - - #[test] - fn test_destructor() { - let x = Gc::new(box 5); - assert_eq!(**x.borrow(), 5); - } -} diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index 82de55efad60..f6c37b6cfc34 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -137,7 +137,6 @@ extern crate rustrt; #[cfg(test)] pub use realstd::cmp; #[cfg(test)] pub use realstd::ty; #[cfg(test)] pub use realstd::boxed; -#[cfg(test)] pub use realstd::gc; // NB: These reexports are in the order they should be listed in rustdoc @@ -220,9 +219,6 @@ pub mod rand; pub mod ascii; -#[cfg(not(test))] -pub mod gc; - pub mod time; /* Common traits */