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/windows | |
| 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/windows')
| -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 |
9 files changed, 21 insertions, 26 deletions
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(|| { |
