MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / execute

Method execute

src/commands/run.rs:230–322  ·  view source on GitHub ↗
(mut self)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 15

spawnFunction · 0.85
msgFunction · 0.85
OkFunction · 0.85
block_onMethod · 0.80
init_loggingMethod · 0.80
debugger_runMethod · 0.80
new_engineMethod · 0.80
load_moduleMethod · 0.80
new_store_and_linkerMethod · 0.80
add_debugger_apiMethod · 0.80
debug_register_moduleMethod · 0.80

Tested by

no test coverage detected