From afc4a3fe1618239017e15cabc664dd70abc1d75b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Sun, 31 Jan 2021 22:28:48 +0100 Subject: add assignment ops --- src/vm.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/vm.rs') diff --git a/src/vm.rs b/src/vm.rs index fd8eb73..6ff7b65 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -159,17 +159,23 @@ impl VM { self.pop(); } - Op::Yield => { - self.frame_mut().ip += 1; - return Ok(OpResult::Yield); - } - Op::PopUpvalue => { let value = self.pop(); let slot = self.stack.len(); self.drop_upvalue(slot, value); } + Op::Copy => { + let v = self.pop(); + self.push(v.clone()); + self.push(v); + } + + Op::Yield => { + self.frame_mut().ip += 1; + return Ok(OpResult::Yield); + } + Op::Constant(value) => { let offset = self.frame().stack_offset; let value = match value { -- cgit v1.2.1