diff options
| author | Brian Cully <bjc@spork.org> | 2025-08-23 12:16:01 -0400 |
|---|---|---|
| committer | Brian Cully <bjc@spork.org> | 2025-08-23 12:16:01 -0400 |
| commit | 8ce858ce7a03090b3b2a1310d17b1206f097637f (patch) | |
| tree | 1cfffdd378abc49f4d1f737b76a83f76224a14c8 /src/lib.rs | |
| parent | 5b8962e35836cf7ccbfdbca312f6b0eb9269e2a6 (diff) | |
| download | automathon-8ce858ce7a03090b3b2a1310d17b1206f097637f.tar.gz automathon-8ce858ce7a03090b3b2a1310d17b1206f097637f.zip | |
add some benchmarking
Diffstat (limited to 'src/lib.rs')
| -rwxr-xr-x | src/lib.rs | 20 |
1 files changed, 17 insertions, 3 deletions
@@ -71,12 +71,26 @@ impl ExportedInterp { info!("executing single instruction"); } - pub fn run(&mut self) { - info!("running to completion"); + pub fn run(&mut self) -> Result<usize, String> { + let Some(interp) = &mut self.i else { + return Err("no interpreter".to_string()) + }; + + interp.ip.word = 0; + interp.ip.offset = 0; + interp.run().or_else(|err| Err(format!("runtime error: {:?}", err))) + } + + pub fn stack(&self) -> Vec<i32> { + let Some(interp) = &self.i else { + return vec![] + }; + + return interp.stack.0.clone() } pub fn wordlist(&self) -> Vec<ExportedByteCode> { - let Some(interp) = self.i.as_ref() else { + let Some(interp) = &self.i else { return vec![] }; |
