aboutsummaryrefslogtreecommitdiffstats
path: root/src/vm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm.rs')
-rw-r--r--src/vm.rs16
1 files changed, 11 insertions, 5 deletions
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 {