From f534d0dccde3412f778d7dfa4852fc44583de412 Mon Sep 17 00:00:00 2001 From: Alexander Ivanov Date: Tue, 15 Oct 2024 18:17:59 +0300 Subject: [PATCH] feat: add an `Asm` trace low level event --- Cargo.toml | 2 +- src/lib.rs | 3 ++- src/tracer.rs | 4 ++++ src/types.rs | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7a7e59c..9ba420d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "runtime_tracing" -version = "0.5.15" +version = "0.5.16" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/lib.rs b/src/lib.rs index 01f4361..2d5578d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,6 +21,7 @@ mod tests { tracer.start(path, Line(1)); tracer.register_step(path, Line(1)); tracer.register_step(path, Line(2)); + tracer.register_asm(&["asm0".to_string(), "asm1".to_string()]); tracer.register_special_event(EventLogKind::Write, "test"); tracer.register_special_event(EventLogKind::Write, "test2"); @@ -87,7 +88,7 @@ mod tests { tracer.register_return(NONE_VALUE); tracer.drop_variable("test_variable3"); - assert_eq!(tracer.events.len(), 32); + assert_eq!(tracer.events.len(), 33); // visible with // cargo tets -- --nocapture // println!("{:#?}", tracer.events); diff --git a/src/tracer.rs b/src/tracer.rs index bab3fd8..2b0b554 100644 --- a/src/tracer.rs +++ b/src/tracer.rs @@ -165,6 +165,10 @@ impl Tracer { self.events.push(TraceLowLevelEvent::Type(typ)); } + pub fn register_asm(&mut self, instructions: &[String]) { + self.events.push(TraceLowLevelEvent::Asm(instructions.to_vec())); + } + pub fn register_variable_with_full_value(&mut self, name: &str, value: ValueRecord) { let variable_id = self.ensure_variable_id(name); self.register_full_value(variable_id, value); diff --git a/src/types.rs b/src/types.rs index 004a403..f57d27c 100644 --- a/src/types.rs +++ b/src/types.rs @@ -18,6 +18,7 @@ pub enum TraceLowLevelEvent { Call(CallRecord), Return(ReturnRecord), Event(RecordEvent), + Asm(Vec), CompoundValue(CompoundValueRecord), CellValue(CellValueRecord), AssignCompoundItem(AssignCompoundItemRecord),