about summary refs log tree commit diff
path: root/src/libstd/thread
diff options
context:
space:
mode:
authoroliver-giersch <oliver.giersch@googlemail.com>2018-10-15 14:38:34 +0200
committerGitHub <noreply@github.com>2018-10-15 14:38:34 +0200
commit30bfdc872020c6addcb2ea488b2a6dbdd5ef355a (patch)
tree9c2ccdcdd23848de81e3cbf54be11ea029ba1614 /src/libstd/thread
parent3527d1d5298fafe6d9e480f95e47f970f1b3adc1 (diff)
parent5891a64165ea4819ca331f5a35f5318a91e1be3f (diff)
downloadrust-30bfdc872020c6addcb2ea488b2a6dbdd5ef355a.tar.gz
rust-30bfdc872020c6addcb2ea488b2a6dbdd5ef355a.zip
Merge pull request #5 from oliver-giersch/master
sync with upstream
Diffstat (limited to 'src/libstd/thread')
-rw-r--r--src/libstd/thread/local.rs14
-rw-r--r--src/libstd/thread/mod.rs2
2 files changed, 11 insertions, 5 deletions
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
index a170abb2628..59f100fad1b 100644
--- a/src/libstd/thread/local.rs
+++ b/src/libstd/thread/local.rs
@@ -172,16 +172,22 @@ macro_rules! __thread_local_inner {
                 &'static $crate::cell::UnsafeCell<
                     $crate::option::Option<$t>>>
             {
-                #[cfg(target_arch = "wasm32")]
+                #[cfg(all(target_arch = "wasm32", not(target_feature = "atomics")))]
                 static __KEY: $crate::thread::__StaticLocalKeyInner<$t> =
                     $crate::thread::__StaticLocalKeyInner::new();
 
                 #[thread_local]
-                #[cfg(all(target_thread_local, not(target_arch = "wasm32")))]
+                #[cfg(all(
+                    target_thread_local,
+                    not(all(target_arch = "wasm32", not(target_feature = "atomics"))),
+                ))]
                 static __KEY: $crate::thread::__FastLocalKeyInner<$t> =
                     $crate::thread::__FastLocalKeyInner::new();
 
-                #[cfg(all(not(target_thread_local), not(target_arch = "wasm32")))]
+                #[cfg(all(
+                    not(target_thread_local),
+                    not(all(target_arch = "wasm32", not(target_feature = "atomics"))),
+                ))]
                 static __KEY: $crate::thread::__OsLocalKeyInner<$t> =
                     $crate::thread::__OsLocalKeyInner::new();
 
@@ -302,7 +308,7 @@ impl<T: 'static> LocalKey<T> {
 /// On some platforms like wasm32 there's no threads, so no need to generate
 /// thread locals and we can instead just use plain statics!
 #[doc(hidden)]
-#[cfg(target_arch = "wasm32")]
+#[cfg(all(target_arch = "wasm32", not(target_feature = "atomics")))]
 pub mod statik {
     use cell::UnsafeCell;
     use fmt;
diff --git a/src/libstd/thread/mod.rs b/src/libstd/thread/mod.rs
index 8df9bee0eb4..dc2d12bf2c4 100644
--- a/src/libstd/thread/mod.rs
+++ b/src/libstd/thread/mod.rs
@@ -203,7 +203,7 @@ pub use self::local::{LocalKey, AccessError};
 // where available, but both are needed.
 
 #[unstable(feature = "libstd_thread_internals", issue = "0")]
-#[cfg(target_arch = "wasm32")]
+#[cfg(all(target_arch = "wasm32", not(target_feature = "atomics")))]
 #[doc(hidden)] pub use self::local::statik::Key as __StaticLocalKeyInner;
 #[unstable(feature = "libstd_thread_internals", issue = "0")]
 #[cfg(target_thread_local)]