|
150 | 150 |
|
151 | 151 | #![stable(feature = "rust1", since = "1.0.0")] |
152 | 152 | #![deny(unsafe_op_in_unsafe_fn)] |
| 153 | +// Under `test`, `__FastLocalKeyInner` seems unused. |
| 154 | +#![cfg_attr(test, allow(dead_code))] |
153 | 155 |
|
154 | 156 | #[cfg(all(test, not(target_os = "emscripten")))] |
155 | 157 | mod tests; |
@@ -192,32 +194,40 @@ pub use scoped::{scope, Scope, ScopedJoinHandle}; |
192 | 194 | #[stable(feature = "rust1", since = "1.0.0")] |
193 | 195 | pub use self::local::{AccessError, LocalKey}; |
194 | 196 |
|
195 | | -// Select the type used by the thread_local! macro to access TLS keys. There |
196 | | -// are three types: "static", "fast", "OS". The "OS" thread local key |
| 197 | +// Provide the type used by the thread_local! macro to access TLS keys. This |
| 198 | +// needs to be kept in sync with the macro itself (in `local.rs`). |
| 199 | +// There are three types: "static", "fast", "OS". The "OS" thread local key |
197 | 200 | // type is accessed via platform-specific API calls and is slow, while the "fast" |
198 | 201 | // key type is accessed via code generated via LLVM, where TLS keys are set up |
199 | 202 | // by the elf linker. "static" is for single-threaded platforms where a global |
200 | 203 | // static is sufficient. |
201 | 204 |
|
202 | 205 | #[unstable(feature = "libstd_thread_internals", issue = "none")] |
203 | | -#[cfg(target_thread_local)] |
204 | 206 | #[cfg(not(test))] |
| 207 | +#[cfg(all( |
| 208 | + target_thread_local, |
| 209 | + not(all(target_family = "wasm", not(target_feature = "atomics"))), |
| 210 | +))] |
205 | 211 | #[doc(hidden)] |
206 | 212 | pub use self::local::fast::Key as __FastLocalKeyInner; |
207 | | -#[unstable(feature = "libstd_thread_internals", issue = "none")] |
208 | | -#[cfg(target_thread_local)] |
209 | | -#[cfg(test)] // when building for tests, use real std's key |
210 | | -pub use realstd::thread::__FastLocalKeyInner; |
211 | 213 |
|
| 214 | +// when building for tests, use real std's type |
212 | 215 | #[unstable(feature = "libstd_thread_internals", issue = "none")] |
213 | | -#[cfg(target_thread_local)] |
214 | 216 | #[cfg(test)] |
215 | | -pub use self::local::fast::Key as __FastLocalKeyInnerUnused; // we import this anyway to silence 'unused' warnings |
| 217 | +#[cfg(all( |
| 218 | + target_thread_local, |
| 219 | + not(all(target_family = "wasm", not(target_feature = "atomics"))), |
| 220 | +))] |
| 221 | +pub use realstd::thread::__FastLocalKeyInner; |
216 | 222 |
|
217 | 223 | #[unstable(feature = "libstd_thread_internals", issue = "none")] |
| 224 | +#[cfg(all( |
| 225 | + not(target_thread_local), |
| 226 | + not(all(target_family = "wasm", not(target_feature = "atomics"))), |
| 227 | +))] |
218 | 228 | #[doc(hidden)] |
219 | | -#[cfg(not(target_thread_local))] |
220 | 229 | pub use self::local::os::Key as __OsLocalKeyInner; |
| 230 | + |
221 | 231 | #[unstable(feature = "libstd_thread_internals", issue = "none")] |
222 | 232 | #[cfg(all(target_family = "wasm", not(target_feature = "atomics")))] |
223 | 233 | #[doc(hidden)] |
|
0 commit comments