aboutsummaryrefslogtreecommitdiffstats
path: root/src/vm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm.rs')
-rw-r--r--src/vm.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/vm.rs b/src/vm.rs
index 68ab3b8..bc3b1e8 100644
--- a/src/vm.rs
+++ b/src/vm.rs
@@ -128,8 +128,10 @@ pub fn run_block(block: Block) -> Result<(), Error> {
impl VM {
fn pop_twice(&mut self) -> (Value, Value) {
- let (a, b) = (self.stack.pop().unwrap(), self.stack.pop().unwrap());
- (b, a)
+ let len = self.stack.len();
+ let res = (self.stack[len-2].clone(), self.stack[len-1].clone());
+ self.stack.truncate(len - 2);
+ res
}
fn _peek_up(&self, amount: usize) -> Option<&Value> {