chore: set to zero in spend loop

This commit is contained in:
rvcas 2022-07-07 13:43:24 -04:00 committed by Kasey White
parent 93f7849fc0
commit e8aa013aa4
2 changed files with 6 additions and 5 deletions

View File

@ -407,6 +407,7 @@ impl Program<NamedDeBruijn> {
let mut machine = Machine::new(Costs::default(), ExBudget::default(), 200); let mut machine = Machine::new(Costs::default(), ExBudget::default(), 200);
let (term, _, _) = machine.run(&self.term)?; let (term, _, _) = machine.run(&self.term)?;
Ok(term) Ok(term)
} }
} }

View File

@ -13,7 +13,7 @@ pub struct Machine {
frames: Vec<Context>, frames: Vec<Context>,
slippage: u32, slippage: u32,
env: Vec<Value>, env: Vec<Value>,
unbudgeted_steps: Vec<u32>, unbudgeted_steps: [u32; 8],
} }
impl Machine { impl Machine {
@ -24,7 +24,7 @@ impl Machine {
slippage, slippage,
frames: vec![Context::NoFrame], frames: vec![Context::NoFrame],
env: vec![], env: vec![],
unbudgeted_steps: vec![0; 8], unbudgeted_steps: [0; 8],
} }
} }
@ -91,7 +91,7 @@ impl Machine {
} }
fn return_compute(&mut self, value: Value) -> Result<Term<NamedDeBruijn>, Error> { fn return_compute(&mut self, value: Value) -> Result<Term<NamedDeBruijn>, Error> {
// TODO: avoid unwrap and possible just return an err when None // TODO: avoid unwrap if possible and just return an err when None
// but honestly it should never be empty anyways because Machine // but honestly it should never be empty anyways because Machine
// is initialized with `Context::NoFrame`. // is initialized with `Context::NoFrame`.
let frame = self.frames.last().cloned().unwrap(); let frame = self.frames.last().cloned().unwrap();
@ -237,9 +237,9 @@ impl Machine {
unspent_step_budget.occurences(self.unbudgeted_steps[i] as i32); unspent_step_budget.occurences(self.unbudgeted_steps[i] as i32);
self.spend_budget(unspent_step_budget)?; self.spend_budget(unspent_step_budget)?;
}
self.unbudgeted_steps = vec![0; 8]; self.unbudgeted_steps[i] = 0;
}
Ok(()) Ok(())
} }