aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs73
1 files changed, 35 insertions, 38 deletions
diff --git a/src/lib.rs b/src/lib.rs
index b432c1f..fd4d74b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -66,8 +66,6 @@
#[cfg(crossbeam_loom)]
extern crate loom_crate as loom;
-use cfg_if::cfg_if;
-
#[cfg(crossbeam_loom)]
#[allow(unused_imports, dead_code)]
mod primitive {
@@ -76,8 +74,7 @@ mod primitive {
}
pub(crate) mod sync {
pub(crate) mod atomic {
- use core::sync::atomic::Ordering;
- pub(crate) use loom::sync::atomic::{fence, AtomicUsize};
+ pub(crate) use loom::sync::atomic::{fence, AtomicPtr, AtomicUsize, Ordering};
// FIXME: loom does not support compiler_fence at the moment.
// https://github.com/tokio-rs/loom/issues/117
@@ -90,11 +87,10 @@ mod primitive {
}
pub(crate) use loom::thread_local;
}
-#[cfg(not(crossbeam_no_atomic_cas))]
+#[cfg(target_has_atomic = "ptr")]
#[cfg(not(crossbeam_loom))]
#[allow(unused_imports, dead_code)]
mod primitive {
- #[cfg(feature = "alloc")]
pub(crate) mod cell {
#[derive(Debug)]
#[repr(transparent)]
@@ -122,13 +118,13 @@ mod primitive {
}
}
}
- #[cfg(feature = "alloc")]
pub(crate) mod sync {
pub(crate) mod atomic {
- pub(crate) use core::sync::atomic::compiler_fence;
- pub(crate) use core::sync::atomic::fence;
- pub(crate) use core::sync::atomic::AtomicUsize;
+ pub(crate) use core::sync::atomic::{
+ compiler_fence, fence, AtomicPtr, AtomicUsize, Ordering,
+ };
}
+ #[cfg(feature = "alloc")]
pub(crate) use alloc::sync::Arc;
}
@@ -136,34 +132,35 @@ mod primitive {
pub(crate) use std::thread_local;
}
-#[cfg(not(crossbeam_no_atomic_cas))]
-cfg_if! {
- if #[cfg(feature = "alloc")] {
- extern crate alloc;
-
- mod atomic;
- mod collector;
- mod deferred;
- mod epoch;
- mod guard;
- mod internal;
- mod sync;
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+extern crate alloc;
- pub use self::atomic::{
- Pointable, Atomic, CompareExchangeError,
- Owned, Pointer, Shared,
- };
- pub use self::collector::{Collector, LocalHandle};
- pub use self::guard::{unprotected, Guard};
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+mod atomic;
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+mod collector;
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+mod deferred;
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+mod epoch;
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+mod guard;
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+mod internal;
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+mod sync;
- #[allow(deprecated)]
- pub use self::atomic::{CompareAndSetError, CompareAndSetOrdering};
- }
-}
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+#[allow(deprecated)]
+pub use crate::atomic::{CompareAndSetError, CompareAndSetOrdering};
+#[cfg(all(feature = "alloc", target_has_atomic = "ptr"))]
+pub use crate::{
+ atomic::{Atomic, CompareExchangeError, Owned, Pointable, Pointer, Shared},
+ collector::{Collector, LocalHandle},
+ guard::{unprotected, Guard},
+};
-cfg_if! {
- if #[cfg(feature = "std")] {
- mod default;
- pub use self::default::{default_collector, is_pinned, pin};
- }
-}
+#[cfg(feature = "std")]
+mod default;
+#[cfg(feature = "std")]
+pub use crate::default::{default_collector, is_pinned, pin};