diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-01-12 22:04:12 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-01-12 22:05:19 +0100 |
| commit | ff2c4940e92c17ddc138df202a3dd731c00bfddb (patch) | |
| tree | 6d22dcf0911746c8ac2258dc2493e12c97d9665c /src/vm.rs | |
| parent | c6ce019aef1e46da636bdb3023459a4025226fe4 (diff) | |
| download | sylt-ff2c4940e92c17ddc138df202a3dd731c00bfddb.tar.gz | |
optimize pop_twice
Fibonacci runtime 0.27 -> 0.19
Diffstat (limited to 'src/vm.rs')
| -rw-r--r-- | src/vm.rs | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -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> { |
