From 0d4fd2a2bce82fdb2b73afbf7770ffeb3e80b70c Mon Sep 17 00:00:00 2001 From: Haled Odat <8566042+HalidOdat@users.noreply.github.com> Date: Sun, 9 Jul 2023 12:40:21 +0200 Subject: [PATCH] Display handlers in bytecode --- boa_engine/src/vm/code_block.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/boa_engine/src/vm/code_block.rs b/boa_engine/src/vm/code_block.rs index cbe4d8047f1..b83b650d93a 100644 --- a/boa_engine/src/vm/code_block.rs +++ b/boa_engine/src/vm/code_block.rs @@ -235,10 +235,10 @@ impl CodeBlock { } pub(crate) fn find_handler(&self, pc: u32) -> Option<&Handler> { - self.handlers + dbg!(self.handlers .iter() .rev() - .find(|&handler| handler.range.contains(&pc)) + .find(|&handler| handler.range.contains(&pc))) } } @@ -674,6 +674,25 @@ impl ToInternedString for CodeBlock { let mut pc = 0; let mut count = 0; while pc < self.bytecode.len() { + for (i, handler) in self.handlers.iter().enumerate().rev() { + if pc == handler.range.start as usize { + f.push_str(&format!( + "\n# Handler {i} start: handler: {}\n", + handler.handler + )); + } + + if pc == handler.range.end as usize { + f.push_str(&format!( + "# Handler {i} end: handler: {}\n\n", + handler.handler + )); + } + + if pc == handler.handler as usize { + f.push('\n'); + } + } let opcode: Opcode = self.bytecode[pc].into(); let opcode = opcode.as_str(); let previous_pc = pc;