diff options
author | Adam Joseph <adam@westernsemico.com> | 2022-11-28T08·18-0800 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2022-12-21T14·50+0000 |
commit | 922bf7aca9f4d4f4834ba5de7841ff58015c8791 (patch) | |
tree | fea67c12705be543fb569860573a8149208868c2 /tvix/eval/src/vm.rs | |
parent | e04b1697e4f4e8236418571c1f5938f0a9717bb7 (diff) |
feat(tvix/eval): remove `derive(Copy)` from Upvalues r/5453
Change-Id: I0fa069fbeff6718a765ece948c2c1bce285496f7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7449 Reviewed-by: grfn <grfn@gws.fyi> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval/src/vm.rs')
-rw-r--r-- | tvix/eval/src/vm.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/tvix/eval/src/vm.rs b/tvix/eval/src/vm.rs index 4ea155f5a3bc..f0764c314fb3 100644 --- a/tvix/eval/src/vm.rs +++ b/tvix/eval/src/vm.rs @@ -22,7 +22,7 @@ struct CallFrame { /// Optional captured upvalues of this frame (if a thunk or /// closure if being evaluated). - upvalues: Upvalues, + upvalues: Rc<Upvalues>, /// Instruction pointer to the instruction currently being /// executed. @@ -242,7 +242,7 @@ impl<'o> VM<'o> { /// been forced. pub fn call_value(&mut self, callable: &Value) -> EvalResult<()> { match callable { - Value::Closure(c) => self.enter_frame(c.lambda(), c.upvalues().clone(), 1), + Value::Closure(c) => self.enter_frame(c.lambda(), c.upvalues(), 1), Value::Builtin(b) => self.call_builtin(b.clone()), @@ -347,7 +347,7 @@ impl<'o> VM<'o> { pub fn enter_frame( &mut self, lambda: Rc<Lambda>, - upvalues: Upvalues, + upvalues: Rc<Upvalues>, arg_count: usize, ) -> EvalResult<()> { self.observer @@ -1090,7 +1090,7 @@ pub fn run_lambda( // with the span of the entire file for top-level expressions. let root_span = lambda.chunk.get_span(CodeIdx(lambda.chunk.code.len() - 1)); - vm.enter_frame(lambda, Upvalues::with_capacity(0), 0)?; + vm.enter_frame(lambda, Rc::new(Upvalues::with_capacity(0)), 0)?; let value = vm.pop(); value |