From 8ee4d6d5db44d93c0fff67db87dcb4ae9f885351 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sun, 4 Sep 2022 16:56:20 +0300 Subject: feat(tvix/eval): implement DisassemblingObserver for compiler This type implements an observer that is called whenever the compiler emits a chunk (after the toplevel, thunks, or lambdas) and prints the output of the disassembler to its internal writer. This replaces half of the uses of the `disassembler` feature, which has been removed from the Cargo configuration. Note that at this commit runtime tracing is not yet implemented as an observer. Change-Id: I7894ca1ba445761aba4ad51d98e4a7b6445f1aea Reviewed-on: https://cl.tvl.fyi/c/depot/+/6449 Reviewed-by: sterni Tested-by: BuildkiteCI --- tvix/eval/src/chunk.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'tvix/eval/src/chunk.rs') diff --git a/tvix/eval/src/chunk.rs b/tvix/eval/src/chunk.rs index a4d6be752b..4d653c2b22 100644 --- a/tvix/eval/src/chunk.rs +++ b/tvix/eval/src/chunk.rs @@ -28,9 +28,6 @@ pub struct Chunk { pub code: Vec, pub constants: Vec, spans: Vec, - - #[cfg(feature = "disassembler")] - pub codemap: std::rc::Rc, } impl Index for Chunk { @@ -93,11 +90,11 @@ impl Chunk { } /// Retrieve the line from which the instruction at `offset` was - /// compiled. Only available when the chunk carries a codemap, - /// i.e. when the disassembler is enabled. - #[cfg(feature = "disassembler")] - pub fn get_line(&self, offset: CodeIdx) -> usize { + /// compiled in the specified codemap. + pub fn get_line(&self, codemap: &codemap::CodeMap, offset: CodeIdx) -> usize { let span = self.get_span(offset); - self.codemap.look_up_span(span).begin.line + 1 + // lines are 0-indexed in the codemap, but users probably want + // real line numbers + codemap.look_up_span(span).begin.line + 1 } } -- cgit 1.4.1