From 213eab2033fc3a915816ee717702e68b9803fde5 Mon Sep 17 00:00:00 2001 From: Timothy Zakian Date: Wed, 29 May 2024 17:57:17 -0700 Subject: [PATCH] [move] Fix and add interactive disassembler --- crates/sui-move/src/disassemble.rs | 5 ++++- .../move/crates/move-bytecode-viewer/src/bytecode_viewer.rs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/sui-move/src/disassemble.rs b/crates/sui-move/src/disassemble.rs index 877ea40cbf63e..f962a5e3c09c4 100644 --- a/crates/sui-move/src/disassemble.rs +++ b/crates/sui-move/src/disassemble.rs @@ -22,6 +22,9 @@ pub struct Disassemble { /// Whether to display the disassembly in raw Debug format #[clap(long = "Xdebug")] debug: bool, + + #[clap(short = 'i', long = "interactive")] + interactive: bool, } impl Disassemble { @@ -40,7 +43,7 @@ impl Disassemble { .expect("Cannot convert module name to string") .to_owned(); move_cli::base::disassemble::Disassemble { - interactive: false, + interactive: self.interactive, package_name: None, module_or_script_name: module_name, debug: self.debug, diff --git a/external-crates/move/crates/move-bytecode-viewer/src/bytecode_viewer.rs b/external-crates/move/crates/move-bytecode-viewer/src/bytecode_viewer.rs index 8669d82dd156b..3a7092bd8a551 100644 --- a/external-crates/move/crates/move-bytecode-viewer/src/bytecode_viewer.rs +++ b/external-crates/move/crates/move-bytecode-viewer/src/bytecode_viewer.rs @@ -47,7 +47,10 @@ impl<'a> BytecodeViewer<'a> { fn build_mapping(&mut self) { let regex = Regex::new(r"^(\d+):.*").unwrap(); - let fun_regex = Regex::new(r"^public\s+([a-zA-Z_]+)\(").unwrap(); + let fun_regex = + Regex::new(r"^(?:public(?:\(\w+\))?|native|entry)?\s*(\w+)\s*(?:<.*>)?\s*\(.*\).*\{") + .unwrap(); + let mut current_fun = None; let mut current_fdef_idx = None; let mut line_map = HashMap::new();