diff options
| author | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-02-01 11:25:10 +0100 |
|---|---|---|
| committer | Edvard Thörnros <edvard.thornros@gmail.com> | 2021-02-01 11:25:10 +0100 |
| commit | c28590d98a5beb176e2f92915faa894be06238f4 (patch) | |
| tree | 7bc042dadb410000d748e62bf823cd78f821375d | |
| parent | 23866f117ace6b4e0b2cd3c611cdb982cf20e4ca (diff) | |
| download | sylt-c28590d98a5beb176e2f92915faa894be06238f4.tar.gz | |
use poppop
| -rw-r--r-- | src/vm.rs | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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) } |
