From 761d4d42f1b47cb6933d292b92b9106b0a254840 Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Mon, 26 Feb 2024 08:19:40 +0100 Subject: [PATCH] Add cold attribute to less likely printer queue branches (#10121) --- crates/ruff_formatter/src/printer/queue.rs | 67 ++++++++++++---------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/crates/ruff_formatter/src/printer/queue.rs b/crates/ruff_formatter/src/printer/queue.rs index 07b83a03fa..711af083c2 100644 --- a/crates/ruff_formatter/src/printer/queue.rs +++ b/crates/ruff_formatter/src/printer/queue.rs @@ -78,27 +78,28 @@ impl<'a> PrintQueue<'a> { impl<'a> Queue<'a> for PrintQueue<'a> { fn pop(&mut self) -> Option<&'a FormatElement> { let elements = self.element_slices.last_mut()?; - elements.next().or_else(|| { - self.element_slices.pop(); - let elements = self.element_slices.last_mut()?; - elements.next() - }) + elements.next().or_else( + #[cold] + || { + self.element_slices.pop(); + let elements = self.element_slices.last_mut()?; + elements.next() + }, + ) } fn top_with_interned(&self) -> Option<&'a FormatElement> { let mut slices = self.element_slices.iter().rev(); let slice = slices.next()?; - match slice.as_slice().first() { - Some(element) => Some(element), - None => { - if let Some(next_elements) = slices.next() { - next_elements.as_slice().first() - } else { - None - } - } - } + slice.as_slice().first().or_else( + #[cold] + || { + slices + .next() + .and_then(|next_elements| next_elements.as_slice().first()) + }, + ) } fn extend_back(&mut self, elements: &'a [FormatElement]) { @@ -146,24 +147,30 @@ impl<'a, 'print> FitsQueue<'a, 'print> { impl<'a, 'print> Queue<'a> for FitsQueue<'a, 'print> { fn pop(&mut self) -> Option<&'a FormatElement> { - self.queue.pop().or_else(|| { - if let Some(next_slice) = self.rest_elements.next_back() { - self.queue.extend_back(next_slice.as_slice()); - self.queue.pop() - } else { - None - } - }) + self.queue.pop().or_else( + #[cold] + || { + if let Some(next_slice) = self.rest_elements.next_back() { + self.queue.extend_back(next_slice.as_slice()); + self.queue.pop() + } else { + None + } + }, + ) } fn top_with_interned(&self) -> Option<&'a FormatElement> { - self.queue.top_with_interned().or_else(|| { - if let Some(next_elements) = self.rest_elements.as_slice().last() { - next_elements.as_slice().first() - } else { - None - } - }) + self.queue.top_with_interned().or_else( + #[cold] + || { + if let Some(next_elements) = self.rest_elements.as_slice().last() { + next_elements.as_slice().first() + } else { + None + } + }, + ) } fn extend_back(&mut self, elements: &'a [FormatElement]) {