From fc892b7a9dd635467f362767ad58fefc26ffc122 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Wed, 24 Aug 2022 02:09:46 +0300 Subject: refactor(tvix/eval): add VM::call helper to set up call frames Change-Id: Ia7ff572af90ae379b23bbd0f5215cd13a4dc0ab5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6248 Reviewed-by: grfn Reviewed-by: sterni Tested-by: BuildkiteCI --- tvix/eval/src/vm.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'tvix/eval/src') diff --git a/tvix/eval/src/vm.rs b/tvix/eval/src/vm.rs index 63e5e4ad7387..1b9419ce2232 100644 --- a/tvix/eval/src/vm.rs +++ b/tvix/eval/src/vm.rs @@ -112,6 +112,16 @@ impl VM { &self.stack[self.stack.len() - 1 - offset] } + fn call(&mut self, lambda: Lambda) { + let frame = CallFrame { + lambda, + ip: 0, + stack_offset: self.stack.len(), + }; + + self.frames.push(frame); + } + fn run(&mut self) -> EvalResult { #[cfg(feature = "disassembler")] let mut tracer = Tracer::new(); @@ -384,17 +394,12 @@ impl VM { } pub fn run_lambda(lambda: Lambda) -> EvalResult { - let frame = CallFrame { - lambda, - ip: 0, - stack_offset: 0, - }; - let mut vm = VM { - frames: vec![frame], + frames: vec![], stack: vec![], with_stack: vec![], }; + vm.call(lambda); vm.run() } -- cgit 1.4.1