From 954b8417b30695e43a15375c38b0c2692ac6a71b Mon Sep 17 00:00:00 2001 From: Sofia Date: Wed, 18 Mar 2026 19:56:02 +0200 Subject: [PATCH] Bring back proper consecutive register reuser --- src/compile.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/compile.rs b/src/compile.rs index 90d07cb..25e8636 100644 --- a/src/compile.rs +++ b/src/compile.rs @@ -47,6 +47,22 @@ impl LocalCounter { } pub fn consecutive(&mut self, amount: usize) -> Vec { + 'outer: for free_num in self.1.clone() { + let mut potentials = vec![free_num]; + let mut curr = free_num; + for _ in 0..amount { + if let Some(next) = self.1.iter().find(|v| **v == curr + 1) { + potentials.push(*next); + curr = *next; + } else { + continue 'outer; + } + } + + self.1 + .retain_mut(|v| potentials.iter().find(|p| v != *p).is_none()); + return potentials; + } let mut returned = Vec::new(); for _ in 0..amount { returned.push(self.new());