diff --git a/src/libarena/lib.rs b/src/libarena/lib.rs index c4c1635aa2a..4338ac7fd02 100644 --- a/src/libarena/lib.rs +++ b/src/libarena/lib.rs @@ -32,6 +32,7 @@ #![feature(core_intrinsics)] #![feature(dropck_eyepatch)] #![feature(generic_param_attrs)] +#![feature(needs_drop)] #![cfg_attr(stage0, feature(staged_api))] #![cfg_attr(test, feature(test))] @@ -82,7 +83,7 @@ impl TypedArenaChunk { unsafe fn destroy(&mut self, len: usize) { // The branch on needs_drop() is an -O1 performance optimization. // Without the branch, dropping TypedArena takes linear time. - if intrinsics::needs_drop::() { + if mem::needs_drop::() { let mut start = self.start(); // Destroy all allocated objects. for _ in 0..len { @@ -350,7 +351,7 @@ impl DroplessArena { #[inline] pub fn alloc(&self, object: T) -> &mut T { unsafe { - assert!(!intrinsics::needs_drop::()); + assert!(!mem::needs_drop::()); assert!(mem::size_of::() != 0); self.align_for::(); @@ -379,9 +380,7 @@ impl DroplessArena { #[inline] pub fn alloc_slice(&self, slice: &[T]) -> &mut [T] where T: Copy { - unsafe { - assert!(!intrinsics::needs_drop::()); - } + assert!(!mem::needs_drop::()); assert!(mem::size_of::() != 0); assert!(slice.len() != 0); self.align_for::(); diff --git a/src/libstd/collections/hash/table.rs b/src/libstd/collections/hash/table.rs index a15269cc87c..50c721db849 100644 --- a/src/libstd/collections/hash/table.rs +++ b/src/libstd/collections/hash/table.rs @@ -12,9 +12,8 @@ use alloc::heap::{allocate, deallocate}; use cmp; use hash::{BuildHasher, Hash, Hasher}; -use intrinsics::needs_drop; use marker; -use mem::{align_of, size_of}; +use mem::{align_of, size_of, needs_drop}; use mem; use ops::{Deref, DerefMut}; use ptr::{self, Unique, Shared}; diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index a4c3b276efd..b0820d6f05a 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -281,6 +281,7 @@ #![feature(linkage)] #![feature(macro_reexport)] #![feature(needs_panic_runtime)] +#![feature(needs_drop)] #![feature(never_type)] #![feature(num_bits_bytes)] #![feature(old_wrapping)] diff --git a/src/libstd/sys/redox/fast_thread_local.rs b/src/libstd/sys/redox/fast_thread_local.rs index f6414673dac..7dc61ce6654 100644 --- a/src/libstd/sys/redox/fast_thread_local.rs +++ b/src/libstd/sys/redox/fast_thread_local.rs @@ -12,9 +12,10 @@ #![unstable(feature = "thread_local_internals", issue = "0")] use cell::{Cell, UnsafeCell}; -use intrinsics; +use mem; use ptr; + pub struct Key { inner: UnsafeCell>, @@ -37,7 +38,7 @@ impl Key { pub fn get(&'static self) -> Option<&'static UnsafeCell>> { unsafe { - if intrinsics::needs_drop::() && self.dtor_running.get() { + if mem::needs_drop::() && self.dtor_running.get() { return None } self.register_dtor(); @@ -46,7 +47,7 @@ impl Key { } unsafe fn register_dtor(&self) { - if !intrinsics::needs_drop::() || self.dtor_registered.get() { + if !mem::needs_drop::() || self.dtor_registered.get() { return } diff --git a/src/libstd/sys/unix/fast_thread_local.rs b/src/libstd/sys/unix/fast_thread_local.rs index 07d76a93dd1..6b3973de84c 100644 --- a/src/libstd/sys/unix/fast_thread_local.rs +++ b/src/libstd/sys/unix/fast_thread_local.rs @@ -13,7 +13,7 @@ use cell::{Cell, UnsafeCell}; use fmt; -use intrinsics; +use mem; use ptr; pub struct Key { @@ -44,7 +44,7 @@ impl Key { pub fn get(&'static self) -> Option<&'static UnsafeCell>> { unsafe { - if intrinsics::needs_drop::() && self.dtor_running.get() { + if mem::needs_drop::() && self.dtor_running.get() { return None } self.register_dtor(); @@ -53,7 +53,7 @@ impl Key { } unsafe fn register_dtor(&self) { - if !intrinsics::needs_drop::() || self.dtor_registered.get() { + if !mem::needs_drop::() || self.dtor_registered.get() { return }