summaryrefslogtreecommitdiffstats
path: root/vendor/rayon-core/src/log.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
commit5363f350887b1e5b5dd21a86f88c8af9d7fea6da (patch)
tree35ca005eb6e0e9a1ba3bb5dbc033209ad445dc17 /vendor/rayon-core/src/log.rs
parentAdding debian version 1.66.0+dfsg1-1. (diff)
downloadrustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.tar.xz
rustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.zip
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/rayon-core/src/log.rs')
-rw-r--r--vendor/rayon-core/src/log.rs64
1 files changed, 27 insertions, 37 deletions
diff --git a/vendor/rayon-core/src/log.rs b/vendor/rayon-core/src/log.rs
index e1ff827df..7b6daf0ab 100644
--- a/vendor/rayon-core/src/log.rs
+++ b/vendor/rayon-core/src/log.rs
@@ -93,6 +93,9 @@ pub(super) enum Event {
/// A job was removed from the global queue.
JobUninjected { worker: usize },
+ /// A job was broadcasted to N threads.
+ JobBroadcast { count: usize },
+
/// When announcing a job, this was the value of the counters we observed.
///
/// No effect on thread state, just a debugging event.
@@ -124,15 +127,15 @@ impl Logger {
let (sender, receiver) = crossbeam_channel::unbounded();
- if env_log.starts_with("tail:") {
- let filename = env_log["tail:".len()..].to_string();
+ if let Some(filename) = env_log.strip_prefix("tail:") {
+ let filename = filename.to_string();
::std::thread::spawn(move || {
Self::tail_logger_thread(num_workers, filename, 10_000, receiver)
});
} else if env_log == "all" {
::std::thread::spawn(move || Self::all_logger_thread(num_workers, receiver));
- } else if env_log.starts_with("profile:") {
- let filename = env_log["profile:".len()..].to_string();
+ } else if let Some(filename) = env_log.strip_prefix("profile:") {
+ let filename = filename.to_string();
::std::thread::spawn(move || {
Self::profile_logger_thread(num_workers, filename, 10_000, receiver)
});
@@ -140,9 +143,9 @@ impl Logger {
panic!("RAYON_LOG should be 'tail:<file>' or 'profile:<file>'");
}
- return Logger {
+ Logger {
sender: Some(sender),
- };
+ }
}
fn disabled() -> Logger {
@@ -175,19 +178,12 @@ impl Logger {
let timeout = std::time::Duration::from_secs(30);
loop {
- loop {
- match receiver.recv_timeout(timeout) {
- Ok(event) => {
- if let Event::Flush = event {
- break;
- } else {
- events.push(event);
- }
- }
-
- Err(_) => break,
+ while let Ok(event) = receiver.recv_timeout(timeout) {
+ if let Event::Flush = event {
+ break;
}
+ events.push(event);
if events.len() == capacity {
break;
}
@@ -219,31 +215,25 @@ impl Logger {
let mut skipped = false;
loop {
- loop {
- match receiver.recv_timeout(timeout) {
- Ok(event) => {
- if let Event::Flush = event {
- // We ignore Flush events in tail mode --
- // we're really just looking for
- // deadlocks.
- continue;
- } else {
- if events.len() == capacity {
- let event = events.pop_front().unwrap();
- state.simulate(&event);
- skipped = true;
- }
-
- events.push_back(event);
- }
+ while let Ok(event) = receiver.recv_timeout(timeout) {
+ if let Event::Flush = event {
+ // We ignore Flush events in tail mode --
+ // we're really just looking for
+ // deadlocks.
+ continue;
+ } else {
+ if events.len() == capacity {
+ let event = events.pop_front().unwrap();
+ state.simulate(&event);
+ skipped = true;
}
- Err(_) => break,
+ events.push_back(event);
}
}
if skipped {
- write!(writer, "...\n").unwrap();
+ writeln!(writer, "...").unwrap();
skipped = false;
}
@@ -417,7 +407,7 @@ impl SimulatorState {
}
}
- write!(w, "\n")?;
+ writeln!(w)?;
Ok(())
}
}