From c28590d98a5beb176e2f92915faa894be06238f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Mon, 1 Feb 2021 11:25:10 +0100 Subject: use poppop --- src/vm.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/vm.rs') diff --git a/src/vm.rs b/src/vm.rs index ea15b5d..485d449 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -34,8 +34,7 @@ macro_rules! one_op { macro_rules! two_op { ( $self:expr, $op:expr, $fun:expr ) => { - let b = $self.pop(); - let a = $self.pop(); + let (a, b) = $self.poppop(); let c = $fun(&a, &b); if c.is_nil() { $self.push(c); @@ -115,6 +114,12 @@ impl VM { self.stack.pop().unwrap() } + fn poppop(&mut self) -> (Value, Value) { + let (a, b) = (self.stack.remove(self.stack.len() - 1), + self.stack.remove(self.stack.len() - 1)); + (b, a) // this matches the order they were on the stack + } + fn push(&mut self, value: Value) { self.stack.push(value) } -- cgit v1.2.1