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

Function test_engine

tests/all/gc.rs:290–324  ·  view source on GitHub ↗
(engine: &Engine)

Source from the content-addressed store, hash-verified

288 return Ok(());
289
290 fn test_engine(engine: &Engine) -> Result<()> {
291 let mut store = Store::new(&engine, ());
292 let flag = Arc::new(AtomicBool::new(false));
293 let externref = ExternRef::new(&mut store, SetFlagOnDrop(flag.clone()))?;
294 Global::new(
295 &mut store,
296 GlobalType::new(ValType::EXTERNREF, Mutability::Const),
297 externref.into(),
298 )?;
299 drop(store);
300 assert!(flag.load(SeqCst));
301
302 let mut store = Store::new(&engine, ());
303 let module = Module::new(
304 &engine,
305 r#"
306 (module
307 (global (mut externref) (ref.null extern))
308
309 (func (export "run") (param externref)
310 local.get 0
311 global.set 0
312 )
313 )
314 "#,
315 )?;
316 let instance = Instance::new(&mut store, &module, &[])?;
317 let run = instance.get_typed_func::<Option<Rooted<ExternRef>>, ()>(&mut store, "run")?;
318 let flag = Arc::new(AtomicBool::new(false));
319 let externref = ExternRef::new(&mut store, SetFlagOnDrop(flag.clone()))?;
320 run.call(&mut store, Some(externref))?;
321 drop(store);
322 assert!(flag.load(SeqCst));
323 Ok(())
324 }
325}
326
327#[test]

Callers 2

global_drops_externrefFunction · 0.85
table_drops_externrefFunction · 0.85

Calls 6

OkFunction · 0.85
SetFlagOnDropClass · 0.70
newFunction · 0.50
dropFunction · 0.50
cloneMethod · 0.45
callMethod · 0.45

Tested by

no test coverage detected