diff options
| author | bors <bors@rust-lang.org> | 2023-11-25 07:29:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-11-25 07:29:08 +0000 |
| commit | b7912d38b1ef07ce89e3c249e8645113b832115a (patch) | |
| tree | 33b56bfa1d24df561f420e26cbdbd02ce90fd7f8 /compiler/rustc_data_structures/src | |
| parent | 44aceb5d185816dd0d0e3b79ec2944320e1066fe (diff) | |
| parent | 34a8680cd50a20e5a2f5a7a6861d7c8b700dc3c6 (diff) | |
| download | rust-b7912d38b1ef07ce89e3c249e8645113b832115a.tar.gz rust-b7912d38b1ef07ce89e3c249e8645113b832115a.zip | |
Auto merge of #3187 - RalfJung:rustup, r=RalfJung
Rustup
Diffstat (limited to 'compiler/rustc_data_structures/src')
| -rw-r--r-- | compiler/rustc_data_structures/src/sync/worker_local.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/compiler/rustc_data_structures/src/sync/worker_local.rs b/compiler/rustc_data_structures/src/sync/worker_local.rs index ffafdba13ce..b34d3dd9044 100644 --- a/compiler/rustc_data_structures/src/sync/worker_local.rs +++ b/compiler/rustc_data_structures/src/sync/worker_local.rs @@ -1,6 +1,7 @@ use parking_lot::Mutex; use std::cell::Cell; use std::cell::OnceCell; +use std::num::NonZeroUsize; use std::ops::Deref; use std::ptr; use std::sync::Arc; @@ -30,7 +31,7 @@ impl RegistryId { } struct RegistryData { - thread_limit: usize, + thread_limit: NonZeroUsize, threads: Mutex<usize>, } @@ -60,7 +61,7 @@ thread_local! { impl Registry { /// Creates a registry which can hold up to `thread_limit` threads. - pub fn new(thread_limit: usize) -> Self { + pub fn new(thread_limit: NonZeroUsize) -> Self { Registry(Arc::new(RegistryData { thread_limit, threads: Mutex::new(0) })) } @@ -73,7 +74,7 @@ impl Registry { /// Panics if the thread limit is hit or if the thread already has an associated registry. pub fn register(&self) { let mut threads = self.0.threads.lock(); - if *threads < self.0.thread_limit { + if *threads < self.0.thread_limit.get() { REGISTRY.with(|registry| { if registry.get().is_some() { drop(threads); @@ -126,7 +127,9 @@ impl<T> WorkerLocal<T> { { let registry = Registry::current(); WorkerLocal { - locals: (0..registry.0.thread_limit).map(|i| CacheAligned(initial(i))).collect(), + locals: (0..registry.0.thread_limit.get()) + .map(|i| CacheAligned(initial(i))) + .collect(), registry, } } |
