From e8aa013aa48d65b68d4c31d40d13e3d3acdbd088 Mon Sep 17 00:00:00 2001 From: rvcas Date: Thu, 7 Jul 2022 13:43:24 -0400 Subject: [PATCH] chore: set to zero in spend loop --- crates/uplc/src/ast.rs | 1 + crates/uplc/src/machine.rs | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/uplc/src/ast.rs b/crates/uplc/src/ast.rs index fef14a14..bc06cb32 100644 --- a/crates/uplc/src/ast.rs +++ b/crates/uplc/src/ast.rs @@ -407,6 +407,7 @@ impl Program { let mut machine = Machine::new(Costs::default(), ExBudget::default(), 200); let (term, _, _) = machine.run(&self.term)?; + Ok(term) } } diff --git a/crates/uplc/src/machine.rs b/crates/uplc/src/machine.rs index 98cae768..dae5435e 100644 --- a/crates/uplc/src/machine.rs +++ b/crates/uplc/src/machine.rs @@ -13,7 +13,7 @@ pub struct Machine { frames: Vec, slippage: u32, env: Vec, - unbudgeted_steps: Vec, + unbudgeted_steps: [u32; 8], } impl Machine { @@ -24,7 +24,7 @@ impl Machine { slippage, frames: vec![Context::NoFrame], 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, 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 // is initialized with `Context::NoFrame`. let frame = self.frames.last().cloned().unwrap(); @@ -237,10 +237,10 @@ impl Machine { unspent_step_budget.occurences(self.unbudgeted_steps[i] as i32); self.spend_budget(unspent_step_budget)?; + + self.unbudgeted_steps[i] = 0; } - self.unbudgeted_steps = vec![0; 8]; - Ok(()) }