diff options
| author | Ibraheem Ahmed <ibraheem@ibraheem.ca> | 2022-03-21 17:32:00 -0400 |
|---|---|---|
| committer | Ibraheem Ahmed <ibraheem@ibraheem.ca> | 2022-03-21 17:32:00 -0400 |
| commit | 7e9303272695b04c6c84a63aa447fa572c768f13 (patch) | |
| tree | 9b889223d2194a75e96cbd774282a4bbcb4feac5 | |
| parent | 4b043faba34ccc053a4d0110634c323f6c03765e (diff) | |
| download | rust-7e9303272695b04c6c84a63aa447fa572c768f13.tar.gz rust-7e9303272695b04c6c84a63aa447fa572c768f13.zip | |
weaken needlessly restrictive orderings on `Arc::*_count`
| -rw-r--r-- | library/alloc/src/sync.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/library/alloc/src/sync.rs b/library/alloc/src/sync.rs index 7e7670aad64..53fec8289b8 100644 --- a/library/alloc/src/sync.rs +++ b/library/alloc/src/sync.rs @@ -25,7 +25,7 @@ use core::ptr::{self, NonNull}; #[cfg(not(no_global_oom_handling))] use core::slice::from_raw_parts_mut; use core::sync::atomic; -use core::sync::atomic::Ordering::{Acquire, Relaxed, Release, SeqCst}; +use core::sync::atomic::Ordering::{Acquire, Relaxed, Release}; #[cfg(not(no_global_oom_handling))] use crate::alloc::handle_alloc_error; @@ -970,7 +970,7 @@ impl<T: ?Sized> Arc<T> { #[must_use] #[stable(feature = "arc_counts", since = "1.15.0")] pub fn weak_count(this: &Self) -> usize { - let cnt = this.inner().weak.load(SeqCst); + let cnt = this.inner().weak.load(Acquire); // If the weak count is currently locked, the value of the // count was 0 just before taking the lock. if cnt == usize::MAX { 0 } else { cnt - 1 } @@ -1000,7 +1000,7 @@ impl<T: ?Sized> Arc<T> { #[must_use] #[stable(feature = "arc_counts", since = "1.15.0")] pub fn strong_count(this: &Self) -> usize { - this.inner().strong.load(SeqCst) + this.inner().strong.load(Acquire) } /// Increments the strong reference count on the `Arc<T>` associated with the @@ -1961,7 +1961,7 @@ impl<T: ?Sized> Weak<T> { #[must_use] #[stable(feature = "weak_counts", since = "1.41.0")] pub fn strong_count(&self) -> usize { - if let Some(inner) = self.inner() { inner.strong.load(SeqCst) } else { 0 } + if let Some(inner) = self.inner() { inner.strong.load(Acquire) } else { 0 } } /// Gets an approximation of the number of `Weak` pointers pointing to this @@ -1980,8 +1980,8 @@ impl<T: ?Sized> Weak<T> { pub fn weak_count(&self) -> usize { self.inner() .map(|inner| { - let weak = inner.weak.load(SeqCst); - let strong = inner.strong.load(SeqCst); + let weak = inner.weak.load(Acquire); + let strong = inner.strong.load(Acquire); if strong == 0 { 0 } else { |
