diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-01-12 23:35:18 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-01-12 23:35:18 +0100 |
| commit | b9710f5de083e8205dbb51921f43d96b17fd43cf (patch) | |
| tree | 03430ba4501e62018a6963348382e0ef1d12344f /src | |
| parent | 4153e1dccda6eb0699ba6d10a98f1dcb117d082d (diff) | |
| download | sylt-b9710f5de083e8205dbb51921f43d96b17fd43cf.tar.gz | |
vm takes &Block
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 2 | ||||
| -rw-r--r-- | src/vm.rs | 8 |
2 files changed, 5 insertions, 5 deletions
@@ -19,7 +19,7 @@ pub fn run_string(s: &str) -> Result<(), Vec<Error>> { pub fn run(tokens: TokenStream, path: &Path) -> Result<(), Vec<Error>> { match compiler::compile("main", path, tokens) { - Ok(block) => vm::run_block(block).or_else(|e| Err(vec![e])), + Ok(block) => vm::run_block(&block).or_else(|e| Err(vec![e])), Err(errors) => Err(errors), } } @@ -130,14 +130,14 @@ impl Block { } #[derive(Debug)] -pub struct VM { +pub struct VM<'a> { stack: Vec<Value>, - block: Block, + block: &'a Block, ip: usize, } -pub fn run_block(block: Block) -> Result<(), Error> { +pub fn run_block<'a> (block: &'a Block) -> Result<(), Error> { let mut vm = VM { stack: Vec::new(), @@ -148,7 +148,7 @@ pub fn run_block(block: Block) -> Result<(), Error> { vm.run() } -impl VM { +impl VM<'_> { fn pop_twice(&mut self) -> (Value, Value) { let len = self.stack.len(); let res = (self.stack[len-2].clone(), self.stack[len-1].clone()); |
