From e2a942e4b2ccdf2caa2970201f90edf5be926c2b Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sun, 4 Sep 2022 20:10:40 +0300 Subject: chore(tvix/eval): clean up remains of previous disassembler impl Change-Id: Ib402ea23a58dc52ed0c5a97178cb5d0e53d69300 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6454 Reviewed-by: sterni Tested-by: BuildkiteCI --- tvix/eval/src/disassembler.rs | 41 ----------------------------------------- tvix/eval/src/eval.rs | 6 +++--- tvix/eval/src/lib.rs | 1 - 3 files changed, 3 insertions(+), 45 deletions(-) delete mode 100644 tvix/eval/src/disassembler.rs diff --git a/tvix/eval/src/disassembler.rs b/tvix/eval/src/disassembler.rs deleted file mode 100644 index 51d39c3910a1..000000000000 --- a/tvix/eval/src/disassembler.rs +++ /dev/null @@ -1,41 +0,0 @@ -//! Implements methods for disassembling and printing a representation -//! of compiled code, as well as tracing the runtime stack during -//! execution. -use std::io::{Stderr, Write}; -use tabwriter::TabWriter; - -use crate::opcode::OpCode; -use crate::value::Value; - -/// Helper struct to trace runtime values and automatically flush the -/// output after the value is dropped (i.e. in both success and -/// failure exits from the VM). -pub struct Tracer(TabWriter); - -impl Default for Tracer { - fn default() -> Self { - Tracer(TabWriter::new(std::io::stderr())) - } -} - -impl Tracer { - pub fn trace(&mut self, op: &OpCode, ip: usize, stack: &[Value]) { - let _ = write!(&mut self.0, "{:04} {:?}\t[ ", ip, op); - - for val in stack { - let _ = write!(&mut self.0, "{} ", val); - } - - let _ = writeln!(&mut self.0, "]"); - } - - pub fn literal(&mut self, line: &str) { - let _ = writeln!(&mut self.0, "{}", line); - } -} - -impl Drop for Tracer { - fn drop(&mut self) { - let _ = self.0.flush(); - } -} diff --git a/tvix/eval/src/eval.rs b/tvix/eval/src/eval.rs index 47c7203d28ac..8f32c819d546 100644 --- a/tvix/eval/src/eval.rs +++ b/tvix/eval/src/eval.rs @@ -3,7 +3,7 @@ use std::{path::PathBuf, rc::Rc}; use crate::{ builtins::global_builtins, errors::{Error, ErrorKind, EvalResult}, - observer::{DisassemblingObserver, NoOpObserver}, + observer::{DisassemblingObserver, TracingObserver}, value::Value, }; @@ -41,7 +41,7 @@ pub fn interpret(code: &str, location: Option) -> EvalResult { println!("{:?}", root_expr); } - let mut observer = DisassemblingObserver::new(codemap.clone(), std::io::stderr()); + let mut observer = DisassemblingObserver::new(codemap, std::io::stderr()); let result = crate::compiler::compile(root_expr, location, &file, global_builtins(), &mut observer)?; @@ -68,6 +68,6 @@ pub fn interpret(code: &str, location: Option) -> EvalResult { return Err(err.clone()); } - let mut tracer = NoOpObserver::default(); + let mut tracer = TracingObserver::new(std::io::stderr()); crate::vm::run_lambda(&mut tracer, result.lambda) } diff --git a/tvix/eval/src/lib.rs b/tvix/eval/src/lib.rs index 447c74cc0e4c..b0baf3c249e9 100644 --- a/tvix/eval/src/lib.rs +++ b/tvix/eval/src/lib.rs @@ -1,7 +1,6 @@ mod builtins; mod chunk; mod compiler; -mod disassembler; mod errors; mod eval; pub mod observer; -- cgit 1.4.1