Skip to content

Commit

Permalink
Unrolled build for rust-lang#123826
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#123826 - kornelski:one-in-a-quintillion, r=Amanieu

Move rare overflow error to a cold function

`scoped.spawn()` generates unnecessary inlined panic-formatting code for a branch that will never be taken.
  • Loading branch information
rust-timer authored Apr 12, 2024
2 parents 46961d2 + 1170d73 commit f58d94e
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions library/std/src/thread/scoped.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,16 @@ impl ScopeData {
// chance it overflows to 0, which would result in unsoundness.
if self.num_running_threads.fetch_add(1, Ordering::Relaxed) > usize::MAX / 2 {
// This can only reasonably happen by mem::forget()'ing a lot of ScopedJoinHandles.
self.decrement_num_running_threads(false);
panic!("too many running threads in thread scope");
self.overflow();
}
}

#[cold]
fn overflow(&self) {
self.decrement_num_running_threads(false);
panic!("too many running threads in thread scope");
}

pub(super) fn decrement_num_running_threads(&self, panic: bool) {
if panic {
self.a_thread_panicked.store(true, Ordering::Relaxed);
Expand Down

0 comments on commit f58d94e

Please sign in to comment.