(mut self)
| 228 | /// Executes the command. |
| 229 | #[cfg(feature = "run")] |
| 230 | pub fn execute(mut self) -> Result<()> { |
| 231 | let runtime = tokio::runtime::Builder::new_multi_thread() |
| 232 | .enable_time() |
| 233 | .enable_io() |
| 234 | .build()?; |
| 235 | |
| 236 | runtime.block_on(async { |
| 237 | self.run.common.init_logging()?; |
| 238 | |
| 239 | #[cfg(feature = "debug")] |
| 240 | let debug_run = self.debugger_run()?; |
| 241 | |
| 242 | let engine = self.new_engine()?; |
| 243 | let main = self.run.load_module( |
| 244 | &engine, |
| 245 | self.module_and_args[0].as_ref(), |
| 246 | self.module_bytes.as_ref().map(|v| &v[..]), |
| 247 | )?; |
| 248 | let (mut store, mut linker) = self.new_store_and_linker(&engine, &main)?; |
| 249 | |
| 250 | #[cfg(feature = "debug")] |
| 251 | if let Some(mut debug_run) = debug_run { |
| 252 | let debug_engine = debug_run.new_engine()?; |
| 253 | let debug_main = debug_run.run.load_module( |
| 254 | &debug_engine, |
| 255 | debug_run.module_and_args[0].as_ref(), |
| 256 | debug_run.module_bytes.as_ref().map(|v| &v[..]), |
| 257 | )?; |
| 258 | let (mut debug_store, debug_linker) = |
| 259 | debug_run.new_store_and_linker(&debug_engine, &debug_main)?; |
| 260 | |
| 261 | let debug_component = match debug_main { |
| 262 | RunTarget::Core(_) => wasmtime::bail!( |
| 263 | "Debugger component is a core module; only components are supported" |
| 264 | ), |
| 265 | RunTarget::Component(c) => c, |
| 266 | }; |
| 267 | let mut debug_linker = match debug_linker { |
| 268 | CliLinker::Core(_) => unreachable!(), |
| 269 | CliLinker::Component(l) => l, |
| 270 | }; |
| 271 | debug_run.add_debugger_api(&mut debug_linker)?; |
| 272 | |
| 273 | // Pre-register the main module on the debuggee store |
| 274 | // so that `debug_all_modules()` returns it before any |
| 275 | // Wasm executes. This lets the debugger see modules |
| 276 | // and set breakpoints at the initial stop. |
| 277 | match &main { |
| 278 | RunTarget::Core(m) => { |
| 279 | store.debug_register_module(m)?; |
| 280 | } |
| 281 | #[cfg(feature = "component-model")] |
| 282 | RunTarget::Component(c) => { |
| 283 | store.debug_register_component(c)?; |
| 284 | } |
| 285 | } |
| 286 | |
| 287 | debug_run |
nothing calls this directly
no test coverage detected