summary refs log tree commit diff
path: root/src/libstd/rc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd/rc.rs')
-rw-r--r--src/libstd/rc.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libstd/rc.rs b/src/libstd/rc.rs
index 0c0f11fc9f0..8cf2da3a1e8 100644
--- a/src/libstd/rc.rs
+++ b/src/libstd/rc.rs
@@ -110,6 +110,13 @@ mod test_rc {
     }
 }
 
+#[abi = "rust-intrinsic"]
+extern "rust-intrinsic" {
+    fn init<T>() -> T;
+    #[cfg(not(stage0))]
+    fn uninit<T>() -> T;
+}
+
 #[deriving(Eq)]
 enum Borrow {
     Mutable,
@@ -171,7 +178,7 @@ impl<T: Owned> Drop for RcMut<T> {
         unsafe {
             (*self.ptr).count -= 1;
             if (*self.ptr).count == 0 {
-                util::replace_ptr(self.ptr, intrinsics::uninit());
+                util::replace_ptr(self.ptr, uninit());
                 free(self.ptr as *c_void)
             }
         }
@@ -185,7 +192,7 @@ impl<T: Owned> Drop for RcMut<T> {
         unsafe {
             (*self.ptr).count -= 1;
             if (*self.ptr).count == 0 {
-                util::replace_ptr(self.ptr, intrinsics::init());
+                util::replace_ptr(self.ptr, init());
                 free(self.ptr as *c_void)
             }
         }