diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2015-05-27 11:18:36 +0300 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2015-05-27 11:19:03 +0300 |
| commit | 377b0900aede976b2d37a499bbd7b62c2e39b358 (patch) | |
| tree | b4a5a4431d36ed1a4e0a39c7d2ef2563ecac9bf4 /src/libstd/sys | |
| parent | 6e8e4f847c2ea02fec021ea15dfb2de6beac797a (diff) | |
| download | rust-377b0900aede976b2d37a499bbd7b62c2e39b358.tar.gz rust-377b0900aede976b2d37a499bbd7b62c2e39b358.zip | |
Use `const fn` to abstract away the contents of UnsafeCell & friends.
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/common/condvar.rs | 6 | ||||
| -rw-r--r-- | src/libstd/sys/common/mutex.rs | 9 | ||||
| -rw-r--r-- | src/libstd/sys/common/poison.rs | 18 | ||||
| -rw-r--r-- | src/libstd/sys/common/remutex.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys/common/rwlock.rs | 9 | ||||
| -rw-r--r-- | src/libstd/sys/common/thread_local.rs | 43 | ||||
| -rw-r--r-- | src/libstd/sys/unix/backtrace.rs | 6 | ||||
| -rw-r--r-- | src/libstd/sys/unix/condvar.rs | 7 | ||||
| -rw-r--r-- | src/libstd/sys/unix/mutex.rs | 9 | ||||
| -rw-r--r-- | src/libstd/sys/unix/os.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/unix/rwlock.rs | 7 | ||||
| -rw-r--r-- | src/libstd/sys/unix/thread.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/unix/thread_local.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys/unix/time.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/windows/backtrace.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/windows/c.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/windows/condvar.rs | 9 | ||||
| -rw-r--r-- | src/libstd/sys/windows/mutex.rs | 7 | ||||
| -rw-r--r-- | src/libstd/sys/windows/net.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/windows/process.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/windows/rwlock.rs | 7 | ||||
| -rw-r--r-- | src/libstd/sys/windows/thread_local.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sys/windows/time.rs | 4 |
23 files changed, 79 insertions, 98 deletions
diff --git a/src/libstd/sys/common/condvar.rs b/src/libstd/sys/common/condvar.rs index 9f46b0c3824..33734a88cf3 100644 --- a/src/libstd/sys/common/condvar.rs +++ b/src/libstd/sys/common/condvar.rs @@ -20,16 +20,12 @@ use sys::condvar as imp; /// this type. pub struct Condvar(imp::Condvar); -/// Static initializer for condition variables. -pub const CONDVAR_INIT: Condvar = Condvar(imp::CONDVAR_INIT); - impl Condvar { /// Creates a new condition variable for use. /// /// Behavior is undefined if the condition variable is moved after it is /// first used with any of the functions below. - #[inline] - pub unsafe fn new() -> Condvar { Condvar(imp::Condvar::new()) } + pub const fn new() -> Condvar { Condvar(imp::Condvar::new()) } /// Signals one waiter on this condition variable to wake up. #[inline] diff --git a/src/libstd/sys/common/mutex.rs b/src/libstd/sys/common/mutex.rs index 1f9dd54192c..5a6dfe7fb1a 100644 --- a/src/libstd/sys/common/mutex.rs +++ b/src/libstd/sys/common/mutex.rs @@ -20,10 +20,13 @@ pub struct Mutex(imp::Mutex); unsafe impl Sync for Mutex {} -/// Constant initializer for statically allocated mutexes. -pub const MUTEX_INIT: Mutex = Mutex(imp::MUTEX_INIT); - impl Mutex { + /// Creates a new mutex for use. + /// + /// Behavior is undefined if the mutex is moved after it is + /// first used with any of the functions below. + pub const fn new() -> Mutex { Mutex(imp::Mutex::new()) } + /// Locks the mutex blocking the current thread until it is available. /// /// Behavior is undefined if the mutex has been moved between this and any diff --git a/src/libstd/sys/common/poison.rs b/src/libstd/sys/common/poison.rs index 67679c11a98..48c81982725 100644 --- a/src/libstd/sys/common/poison.rs +++ b/src/libstd/sys/common/poison.rs @@ -10,26 +10,28 @@ use prelude::v1::*; -use marker::Reflect; -use cell::UnsafeCell; +use cell::Cell; use error::{Error}; use fmt; +use marker::Reflect; use thread; -pub struct Flag { failed: UnsafeCell<bool> } +pub struct Flag { failed: Cell<bool> } // This flag is only ever accessed with a lock previously held. Note that this // a totally private structure. unsafe impl Send for Flag {} unsafe impl Sync for Flag {} -pub const FLAG_INIT: Flag = Flag { failed: UnsafeCell { value: false } }; - impl Flag { + pub const fn new() -> Flag { + Flag { failed: Cell::new(false) } + } + #[inline] pub fn borrow(&self) -> LockResult<Guard> { let ret = Guard { panicking: thread::panicking() }; - if unsafe { *self.failed.get() } { + if self.get() { Err(PoisonError::new(ret)) } else { Ok(ret) @@ -39,13 +41,13 @@ impl Flag { #[inline] pub fn done(&self, guard: &Guard) { if !guard.panicking && thread::panicking() { - unsafe { *self.failed.get() = true; } + self.failed.set(true); } } #[inline] pub fn get(&self) -> bool { - unsafe { *self.failed.get() } + self.failed.get() } } diff --git a/src/libstd/sys/common/remutex.rs b/src/libstd/sys/common/remutex.rs index 1a467580672..72f8453233a 100644 --- a/src/libstd/sys/common/remutex.rs +++ b/src/libstd/sys/common/remutex.rs @@ -54,7 +54,7 @@ impl<T> ReentrantMutex<T> { unsafe { let mut mutex = ReentrantMutex { inner: box sys::ReentrantMutex::uninitialized(), - poison: poison::FLAG_INIT, + poison: poison::Flag::new(), data: t, }; mutex.inner.init(); diff --git a/src/libstd/sys/common/rwlock.rs b/src/libstd/sys/common/rwlock.rs index 725a09bcc86..71a4f01ec4c 100644 --- a/src/libstd/sys/common/rwlock.rs +++ b/src/libstd/sys/common/rwlock.rs @@ -17,10 +17,13 @@ use sys::rwlock as imp; /// safer types at the top level of this crate instead of this type. pub struct RWLock(imp::RWLock); -/// Constant initializer for static RWLocks. -pub const RWLOCK_INIT: RWLock = RWLock(imp::RWLOCK_INIT); - impl RWLock { + /// Creates a new reader-writer lock for use. + /// + /// Behavior is undefined if the reader-writer lock is moved after it is + /// first used with any of the functions below. + pub const fn new() -> RWLock { RWLock(imp::RWLock::new()) } + /// Acquires shared access to the underlying lock, blocking the current /// thread to do so. /// diff --git a/src/libstd/sys/common/thread_local.rs b/src/libstd/sys/common/thread_local.rs index 618a389110a..eb4cbfcfbcd 100644 --- a/src/libstd/sys/common/thread_local.rs +++ b/src/libstd/sys/common/thread_local.rs @@ -86,19 +86,13 @@ use sys::thread_local as imp; /// } /// ``` pub struct StaticKey { - /// Inner static TLS key (internals), created with by `INIT_INNER` in this - /// module. - pub inner: StaticKeyInner, + /// Inner static TLS key (internals). + key: AtomicUsize, /// Destructor for the TLS value. /// /// See `Key::new` for information about when the destructor runs and how /// it runs. - pub dtor: Option<unsafe extern fn(*mut u8)>, -} - -/// Inner contents of `StaticKey`, created by the `INIT_INNER` constant. -pub struct StaticKeyInner { - key: AtomicUsize, + dtor: Option<unsafe extern fn(*mut u8)>, } /// A type for a safely managed OS-based TLS slot. @@ -129,19 +123,16 @@ pub struct Key { /// Constant initialization value for static TLS keys. /// /// This value specifies no destructor by default. -pub const INIT: StaticKey = StaticKey { - inner: INIT_INNER, - dtor: None, -}; - -/// Constant initialization value for the inner part of static TLS keys. -/// -/// This value allows specific configuration of the destructor for a TLS key. -pub const INIT_INNER: StaticKeyInner = StaticKeyInner { - key: atomic::ATOMIC_USIZE_INIT, -}; +pub const INIT: StaticKey = StaticKey::new(None); impl StaticKey { + pub const fn new(dtor: Option<unsafe extern fn(*mut u8)>) -> StaticKey { + StaticKey { + key: atomic::AtomicUsize::new(0), + dtor: dtor + } + } + /// Gets the value associated with this TLS key /// /// This will lazily allocate a TLS key from the OS if one has not already @@ -164,7 +155,7 @@ impl StaticKey { /// Note that this does *not* run the user-provided destructor if one was /// specified at definition time. Doing so must be done manually. pub unsafe fn destroy(&self) { - match self.inner.key.swap(0, Ordering::SeqCst) { + match self.key.swap(0, Ordering::SeqCst) { 0 => {} n => { imp::destroy(n as imp::Key) } } @@ -172,7 +163,7 @@ impl StaticKey { #[inline] unsafe fn key(&self) -> imp::Key { - match self.inner.key.load(Ordering::Relaxed) { + match self.key.load(Ordering::Relaxed) { 0 => self.lazy_init() as imp::Key, n => n as imp::Key } @@ -197,7 +188,7 @@ impl StaticKey { key2 }; assert!(key != 0); - match self.inner.key.compare_and_swap(0, key as usize, Ordering::SeqCst) { + match self.key.compare_and_swap(0, key as usize, Ordering::SeqCst) { // The CAS succeeded, so we've created the actual key 0 => key as usize, // If someone beat us to the punch, use their key instead @@ -245,7 +236,7 @@ impl Drop for Key { #[cfg(test)] mod tests { use prelude::v1::*; - use super::{Key, StaticKey, INIT_INNER}; + use super::{Key, StaticKey}; fn assert_sync<T: Sync>() {} fn assert_send<T: Send>() {} @@ -267,8 +258,8 @@ mod tests { #[test] fn statik() { - static K1: StaticKey = StaticKey { inner: INIT_INNER, dtor: None }; - static K2: StaticKey = StaticKey { inner: INIT_INNER, dtor: None }; + static K1: StaticKey = StaticKey::new(None); + static K2: StaticKey = StaticKey::new(None); unsafe { assert!(K1.get().is_null()); diff --git a/src/libstd/sys/unix/backtrace.rs b/src/libstd/sys/unix/backtrace.rs index 135ae1bf916..b23a3eee1a1 100644 --- a/src/libstd/sys/unix/backtrace.rs +++ b/src/libstd/sys/unix/backtrace.rs @@ -91,7 +91,7 @@ use io; use libc; use mem; use str; -use sync::{StaticMutex, MUTEX_INIT}; +use sync::StaticMutex; use sys_common::backtrace::*; @@ -117,7 +117,7 @@ pub fn write(w: &mut Write) -> io::Result<()> { // while it doesn't requires lock for work as everything is // local, it still displays much nicer backtraces when a // couple of threads panic simultaneously - static LOCK: StaticMutex = MUTEX_INIT; + static LOCK: StaticMutex = StaticMutex::new(); let _g = LOCK.lock(); try!(writeln!(w, "stack backtrace:")); @@ -148,7 +148,7 @@ pub fn write(w: &mut Write) -> io::Result<()> { // is semi-reasonable in terms of printing anyway, and we know that all // I/O done here is blocking I/O, not green I/O, so we don't have to // worry about this being a native vs green mutex. - static LOCK: StaticMutex = MUTEX_INIT; + static LOCK: StaticMutex = StaticMutex::new(); let _g = LOCK.lock(); try!(writeln!(w, "stack backtrace:")); diff --git a/src/libstd/sys/unix/condvar.rs b/src/libstd/sys/unix/condvar.rs index 29a13cc6be7..c8708190a2e 100644 --- a/src/libstd/sys/unix/condvar.rs +++ b/src/libstd/sys/unix/condvar.rs @@ -23,13 +23,8 @@ pub struct Condvar { inner: UnsafeCell<ffi::pthread_cond_t> } unsafe impl Send for Condvar {} unsafe impl Sync for Condvar {} -pub const CONDVAR_INIT: Condvar = Condvar { - inner: UnsafeCell { value: ffi::PTHREAD_COND_INITIALIZER }, -}; - impl Condvar { - #[inline] - pub unsafe fn new() -> Condvar { + pub const fn new() -> Condvar { // Might be moved and address is changing it is better to avoid // initialization of potentially opaque OS data before it landed Condvar { inner: UnsafeCell::new(ffi::PTHREAD_COND_INITIALIZER) } diff --git a/src/libstd/sys/unix/mutex.rs b/src/libstd/sys/unix/mutex.rs index 70d14f63dbc..6eed403dfc0 100644 --- a/src/libstd/sys/unix/mutex.rs +++ b/src/libstd/sys/unix/mutex.rs @@ -21,20 +21,15 @@ pub unsafe fn raw(m: &Mutex) -> *mut ffi::pthread_mutex_t { m.inner.get() } -pub const MUTEX_INIT: Mutex = Mutex { - inner: UnsafeCell { value: ffi::PTHREAD_MUTEX_INITIALIZER }, -}; - unsafe impl Send for Mutex {} unsafe impl Sync for Mutex {} #[allow(dead_code)] // sys isn't exported yet impl Mutex { - #[inline] - pub unsafe fn new() -> Mutex { + pub const fn new() -> Mutex { // Might be moved and address is changing it is better to avoid // initialization of potentially opaque OS data before it landed - MUTEX_INIT + Mutex { inner: UnsafeCell::new(ffi::PTHREAD_MUTEX_INITIALIZER) } } #[inline] pub unsafe fn lock(&self) { diff --git a/src/libstd/sys/unix/os.rs b/src/libstd/sys/unix/os.rs index 5919502abde..5178d7b8fb1 100644 --- a/src/libstd/sys/unix/os.rs +++ b/src/libstd/sys/unix/os.rs @@ -216,8 +216,8 @@ pub fn current_exe() -> io::Result<PathBuf> { #[cfg(any(target_os = "bitrig", target_os = "openbsd"))] pub fn current_exe() -> io::Result<PathBuf> { - use sync::{StaticMutex, MUTEX_INIT}; - static LOCK: StaticMutex = MUTEX_INIT; + use sync::StaticMutex; + static LOCK: StaticMutex = StaticMutex::new(); extern { fn rust_current_exe() -> *const c_char; diff --git a/src/libstd/sys/unix/rwlock.rs b/src/libstd/sys/unix/rwlock.rs index 7bb9fb68c14..ee687f350f0 100644 --- a/src/libstd/sys/unix/rwlock.rs +++ b/src/libstd/sys/unix/rwlock.rs @@ -16,14 +16,13 @@ use sys::sync as ffi; pub struct RWLock { inner: UnsafeCell<ffi::pthread_rwlock_t> } -pub const RWLOCK_INIT: RWLock = RWLock { - inner: UnsafeCell { value: ffi::PTHREAD_RWLOCK_INITIALIZER }, -}; - unsafe impl Send for RWLock {} unsafe impl Sync for RWLock {} impl RWLock { + pub const fn new() -> RWLock { + RWLock { inner: UnsafeCell::new(ffi::PTHREAD_RWLOCK_INITIALIZER) } + } #[inline] pub unsafe fn read(&self) { let r = ffi::pthread_rwlock_rdlock(self.inner.get()); diff --git a/src/libstd/sys/unix/thread.rs b/src/libstd/sys/unix/thread.rs index 0cb5a06e6b6..bb0e12e8df8 100644 --- a/src/libstd/sys/unix/thread.rs +++ b/src/libstd/sys/unix/thread.rs @@ -330,10 +330,10 @@ pub mod guard { #[cfg(target_os = "linux")] fn min_stack_size(attr: *const libc::pthread_attr_t) -> usize { use dynamic_lib::DynamicLibrary; - use sync::{Once, ONCE_INIT}; + use sync::Once; type F = unsafe extern "C" fn(*const libc::pthread_attr_t) -> libc::size_t; - static INIT: Once = ONCE_INIT; + static INIT: Once = Once::new(); static mut __pthread_get_minstack: Option<F> = None; INIT.call_once(|| { diff --git a/src/libstd/sys/unix/thread_local.rs b/src/libstd/sys/unix/thread_local.rs index 9b7079ee108..3afe84b2580 100644 --- a/src/libstd/sys/unix/thread_local.rs +++ b/src/libstd/sys/unix/thread_local.rs @@ -8,6 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![allow(dead_code)] // sys isn't exported yet + use prelude::v1::*; use libc::c_int; diff --git a/src/libstd/sys/unix/time.rs b/src/libstd/sys/unix/time.rs index 16dfd3eebd0..6b84baeca7d 100644 --- a/src/libstd/sys/unix/time.rs +++ b/src/libstd/sys/unix/time.rs @@ -17,7 +17,7 @@ mod inner { use libc; use time::Duration; use ops::Sub; - use sync::{Once, ONCE_INIT}; + use sync::Once; use super::NSEC_PER_SEC; pub struct SteadyTime { @@ -42,7 +42,7 @@ mod inner { numer: 0, denom: 0, }; - static ONCE: Once = ONCE_INIT; + static ONCE: Once = Once::new(); unsafe { ONCE.call_once(|| { diff --git a/src/libstd/sys/windows/backtrace.rs b/src/libstd/sys/windows/backtrace.rs index d94dfdeeea4..3f595762fc7 100644 --- a/src/libstd/sys/windows/backtrace.rs +++ b/src/libstd/sys/windows/backtrace.rs @@ -36,7 +36,7 @@ use mem; use path::Path; use ptr; use str; -use sync::{StaticMutex, MUTEX_INIT}; +use sync::StaticMutex; use sys_common::backtrace::*; @@ -295,7 +295,7 @@ impl Drop for Cleanup { pub fn write(w: &mut Write) -> io::Result<()> { // According to windows documentation, all dbghelp functions are // single-threaded. - static LOCK: StaticMutex = MUTEX_INIT; + static LOCK: StaticMutex = StaticMutex::new(); let _g = LOCK.lock(); // Open up dbghelp.dll, we don't link to it explicitly because it can't diff --git a/src/libstd/sys/windows/c.rs b/src/libstd/sys/windows/c.rs index e9b850856e1..3c9b2ef1b98 100644 --- a/src/libstd/sys/windows/c.rs +++ b/src/libstd/sys/windows/c.rs @@ -340,10 +340,10 @@ pub mod compat { -> $rettype:ty { $fallback:expr }) => ( #[inline(always)] pub unsafe fn $symbol($($argname: $argtype),*) -> $rettype { - use sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}; + use sync::atomic::{AtomicUsize, Ordering}; use mem; - static PTR: AtomicUsize = ATOMIC_USIZE_INIT; + static PTR: AtomicUsize = AtomicUsize::new(0); fn load() -> usize { ::sys::c::compat::store_func(&PTR, diff --git a/src/libstd/sys/windows/condvar.rs b/src/libstd/sys/windows/condvar.rs index 8bb2326e4d6..baa7d1ceea3 100644 --- a/src/libstd/sys/windows/condvar.rs +++ b/src/libstd/sys/windows/condvar.rs @@ -22,13 +22,10 @@ pub struct Condvar { inner: UnsafeCell<ffi::CONDITION_VARIABLE> } unsafe impl Send for Condvar {} unsafe impl Sync for Condvar {} -pub const CONDVAR_INIT: Condvar = Condvar { - inner: UnsafeCell { value: ffi::CONDITION_VARIABLE_INIT } -}; - impl Condvar { - #[inline] - pub unsafe fn new() -> Condvar { CONDVAR_INIT } + pub const fn new() -> Condvar { + Condvar { inner: UnsafeCell::new(ffi::CONDITION_VARIABLE_INIT) } + } #[inline] pub unsafe fn wait(&self, mutex: &Mutex) { diff --git a/src/libstd/sys/windows/mutex.rs b/src/libstd/sys/windows/mutex.rs index 9d2624f9418..29e370698ad 100644 --- a/src/libstd/sys/windows/mutex.rs +++ b/src/libstd/sys/windows/mutex.rs @@ -16,10 +16,6 @@ use mem; pub struct Mutex { inner: UnsafeCell<ffi::SRWLOCK> } -pub const MUTEX_INIT: Mutex = Mutex { - inner: UnsafeCell { value: ffi::SRWLOCK_INIT } -}; - unsafe impl Send for Mutex {} unsafe impl Sync for Mutex {} @@ -41,6 +37,9 @@ pub unsafe fn raw(m: &Mutex) -> ffi::PSRWLOCK { // is there there are no guarantees of fairness. impl Mutex { + pub const fn new() -> Mutex { + Mutex { inner: UnsafeCell::new(ffi::SRWLOCK_INIT) } + } #[inline] pub unsafe fn lock(&self) { ffi::AcquireSRWLockExclusive(self.inner.get()) diff --git a/src/libstd/sys/windows/net.rs b/src/libstd/sys/windows/net.rs index 6bbcd968157..71e064bcc6b 100644 --- a/src/libstd/sys/windows/net.rs +++ b/src/libstd/sys/windows/net.rs @@ -18,7 +18,7 @@ use net::SocketAddr; use num::One; use ops::Neg; use rt; -use sync::{Once, ONCE_INIT}; +use sync::Once; use sys::c; use sys_common::{AsInner, FromInner}; @@ -29,7 +29,7 @@ pub struct Socket(libc::SOCKET); /// Checks whether the Windows socket interface has been started already, and /// if not, starts it. pub fn init() { - static START: Once = ONCE_INIT; + static START: Once = Once::new(); START.call_once(|| unsafe { let mut data: c::WSADATA = mem::zeroed(); diff --git a/src/libstd/sys/windows/process.rs b/src/libstd/sys/windows/process.rs index bc4762c197e..178b6ea42d2 100644 --- a/src/libstd/sys/windows/process.rs +++ b/src/libstd/sys/windows/process.rs @@ -24,7 +24,7 @@ use mem; use os::windows::ffi::OsStrExt; use path::Path; use ptr; -use sync::{StaticMutex, MUTEX_INIT}; +use sync::StaticMutex; use sys::c; use sys::fs::{OpenOptions, File}; use sys::handle::Handle; @@ -169,7 +169,7 @@ impl Process { try!(unsafe { // `CreateProcess` is racy! // http://support.microsoft.com/kb/315939 - static CREATE_PROCESS_LOCK: StaticMutex = MUTEX_INIT; + static CREATE_PROCESS_LOCK: StaticMutex = StaticMutex::new(); let _lock = CREATE_PROCESS_LOCK.lock(); cvt(CreateProcessW(ptr::null(), diff --git a/src/libstd/sys/windows/rwlock.rs b/src/libstd/sys/windows/rwlock.rs index 009605535a0..e727638e3e9 100644 --- a/src/libstd/sys/windows/rwlock.rs +++ b/src/libstd/sys/windows/rwlock.rs @@ -15,14 +15,13 @@ use sys::sync as ffi; pub struct RWLock { inner: UnsafeCell<ffi::SRWLOCK> } -pub const RWLOCK_INIT: RWLock = RWLock { - inner: UnsafeCell { value: ffi::SRWLOCK_INIT } -}; - unsafe impl Send for RWLock {} unsafe impl Sync for RWLock {} impl RWLock { + pub const fn new() -> RWLock { + RWLock { inner: UnsafeCell::new(ffi::SRWLOCK_INIT) } + } #[inline] pub unsafe fn read(&self) { ffi::AcquireSRWLockShared(self.inner.get()) diff --git a/src/libstd/sys/windows/thread_local.rs b/src/libstd/sys/windows/thread_local.rs index ea5af3f2830..a3d522d1757 100644 --- a/src/libstd/sys/windows/thread_local.rs +++ b/src/libstd/sys/windows/thread_local.rs @@ -15,7 +15,7 @@ use libc::types::os::arch::extra::{DWORD, LPVOID, BOOL}; use boxed; use ptr; use rt; -use sys_common::mutex::{MUTEX_INIT, Mutex}; +use sys_common::mutex::Mutex; pub type Key = DWORD; pub type Dtor = unsafe extern fn(*mut u8); @@ -58,7 +58,7 @@ pub type Dtor = unsafe extern fn(*mut u8); // on poisoning and this module needs to operate at a lower level than requiring // the thread infrastructure to be in place (useful on the borders of // initialization/destruction). -static DTOR_LOCK: Mutex = MUTEX_INIT; +static DTOR_LOCK: Mutex = Mutex::new(); static mut DTORS: *mut Vec<(Key, Dtor)> = 0 as *mut _; // ------------------------------------------------------------------------- diff --git a/src/libstd/sys/windows/time.rs b/src/libstd/sys/windows/time.rs index e64df54a0fa..f5a70ccc907 100644 --- a/src/libstd/sys/windows/time.rs +++ b/src/libstd/sys/windows/time.rs @@ -10,7 +10,7 @@ use libc; use ops::Sub; use time::Duration; -use sync::{Once, ONCE_INIT}; +use sync::Once; const NANOS_PER_SEC: u64 = 1_000_000_000; @@ -28,7 +28,7 @@ impl SteadyTime { fn frequency() -> libc::LARGE_INTEGER { static mut FREQUENCY: libc::LARGE_INTEGER = 0; - static ONCE: Once = ONCE_INIT; + static ONCE: Once = Once::new(); unsafe { ONCE.call_once(|| { |
