diff options
| author | Akos Kiss <akiss@inf.u-szeged.hu> | 2014-12-12 23:39:27 +0000 |
|---|---|---|
| committer | Akos Kiss <akiss@inf.u-szeged.hu> | 2015-01-03 15:16:10 +0000 |
| commit | 6e5fb8bd1bef7a36c32194b35ec16d0365adbcf1 (patch) | |
| tree | b6bbb41f6e5b897a93ffb89d1603ab7c16096cf1 /src/libstd/thread_local | |
| parent | fc2ba13939aa9672d886beb06efde7aeda2d5f7f (diff) | |
| download | rust-6e5fb8bd1bef7a36c32194b35ec16d0365adbcf1.tar.gz rust-6e5fb8bd1bef7a36c32194b35ec16d0365adbcf1.zip | |
Initial version of AArch64 support.
Adds AArch64 knowledge to: * configure, * make files, * sources, * tests, and * documentation.
Diffstat (limited to 'src/libstd/thread_local')
| -rw-r--r-- | src/libstd/thread_local/mod.rs | 18 | ||||
| -rw-r--r-- | src/libstd/thread_local/scoped.rs | 20 |
2 files changed, 24 insertions, 14 deletions
diff --git a/src/libstd/thread_local/mod.rs b/src/libstd/thread_local/mod.rs index 75e5ac59685..91d8aec01cf 100644 --- a/src/libstd/thread_local/mod.rs +++ b/src/libstd/thread_local/mod.rs @@ -1,4 +1,4 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // @@ -175,17 +175,21 @@ macro_rules! thread_local { #[doc(hidden)] macro_rules! __thread_local_inner { (static $name:ident: $t:ty = $init:expr) => ( - #[cfg_attr(any(target_os = "macos", target_os = "linux"), thread_local)] + #[cfg_attr(all(any(target_os = "macos", target_os = "linux"), + not(target_arch = "aarch64")), + thread_local)] static $name: ::std::thread_local::__impl::KeyInner<$t> = __thread_local_inner!($init, $t); ); (pub static $name:ident: $t:ty = $init:expr) => ( - #[cfg_attr(any(target_os = "macos", target_os = "linux"), thread_local)] + #[cfg_attr(all(any(target_os = "macos", target_os = "linux"), + not(target_arch = "aarch64")), + thread_local)] pub static $name: ::std::thread_local::__impl::KeyInner<$t> = __thread_local_inner!($init, $t); ); ($init:expr, $t:ty) => ({ - #[cfg(any(target_os = "macos", target_os = "linux"))] + #[cfg(all(any(target_os = "macos", target_os = "linux"), not(target_arch = "aarch64")))] const _INIT: ::std::thread_local::__impl::KeyInner<$t> = { ::std::thread_local::__impl::KeyInner { inner: ::std::cell::UnsafeCell { value: $init }, @@ -194,7 +198,7 @@ macro_rules! __thread_local_inner { } }; - #[cfg(all(not(any(target_os = "macos", target_os = "linux"))))] + #[cfg(any(not(any(target_os = "macos", target_os = "linux")), target_arch = "aarch64"))] const _INIT: ::std::thread_local::__impl::KeyInner<$t> = { unsafe extern fn __destroy(ptr: *mut u8) { ::std::thread_local::__impl::destroy_value::<$t>(ptr); @@ -317,7 +321,7 @@ impl<T: 'static> Key<T> { pub fn destroyed(&'static self) -> bool { self.state() == State::Destroyed } } -#[cfg(any(target_os = "macos", target_os = "linux"))] +#[cfg(all(any(target_os = "macos", target_os = "linux"), not(target_arch = "aarch64")))] mod imp { use prelude::v1::*; @@ -449,7 +453,7 @@ mod imp { } } -#[cfg(not(any(target_os = "macos", target_os = "linux")))] +#[cfg(any(not(any(target_os = "macos", target_os = "linux")), target_arch = "aarch64"))] mod imp { use prelude::v1::*; diff --git a/src/libstd/thread_local/scoped.rs b/src/libstd/thread_local/scoped.rs index c53d393f1eb..dc36fda3a02 100644 --- a/src/libstd/thread_local/scoped.rs +++ b/src/libstd/thread_local/scoped.rs @@ -1,4 +1,4 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // @@ -78,13 +78,19 @@ macro_rules! scoped_thread_local { #[doc(hidden)] macro_rules! __scoped_thread_local_inner { (static $name:ident: $t:ty) => ( - #[cfg_attr(not(any(windows, target_os = "android", target_os = "ios")), + #[cfg_attr(not(any(windows, + target_os = "android", + target_os = "ios", + target_arch = "aarch64")), thread_local)] static $name: ::std::thread_local::scoped::Key<$t> = __scoped_thread_local_inner!($t); ); (pub static $name:ident: $t:ty) => ( - #[cfg_attr(not(any(windows, target_os = "android", target_os = "ios")), + #[cfg_attr(not(any(windows, + target_os = "android", + target_os = "ios", + target_arch = "aarch64")), thread_local)] pub static $name: ::std::thread_local::scoped::Key<$t> = __scoped_thread_local_inner!($t); @@ -92,14 +98,14 @@ macro_rules! __scoped_thread_local_inner { ($t:ty) => ({ use std::thread_local::scoped::Key as __Key; - #[cfg(not(any(windows, target_os = "android", target_os = "ios")))] + #[cfg(not(any(windows, target_os = "android", target_os = "ios", target_arch = "aarch64")))] const _INIT: __Key<$t> = __Key { inner: ::std::thread_local::scoped::__impl::KeyInner { inner: ::std::cell::UnsafeCell { value: 0 as *mut _ }, } }; - #[cfg(any(windows, target_os = "android", target_os = "ios"))] + #[cfg(any(windows, target_os = "android", target_os = "ios", target_arch = "aarch64"))] const _INIT: __Key<$t> = __Key { inner: ::std::thread_local::scoped::__impl::KeyInner { inner: ::std::thread_local::scoped::__impl::OS_INIT, @@ -199,7 +205,7 @@ impl<T> Key<T> { } } -#[cfg(not(any(windows, target_os = "android", target_os = "ios")))] +#[cfg(not(any(windows, target_os = "android", target_os = "ios", target_arch = "aarch64")))] mod imp { use std::cell::UnsafeCell; @@ -217,7 +223,7 @@ mod imp { } } -#[cfg(any(windows, target_os = "android", target_os = "ios"))] +#[cfg(any(windows, target_os = "android", target_os = "ios", target_arch = "aarch64"))] mod imp { use kinds::marker; use sys_common::thread_local::StaticKey as OsStaticKey; |
