Remove the need for HostRef<Module>

This commit continues previous work and also #708 by removing the need
to use `HostRef<Module>` in the API of the `wasmtime` crate. The API
changes performed here are:

* The `Module` type is now itself internally reference counted.
* The `Module::store` function now returns the `Store` that was used to
  create a `Module`
* Documentation for `Module` and its methods have been expanded.
This commit is contained in:
Alex Crichton
2020-01-08 08:30:57 -08:00
parent eb1991c579
commit 1fe76ef9e3
20 changed files with 194 additions and 110 deletions

View File

@@ -34,7 +34,7 @@ fn test_import_calling_export() {
let store = Store::default();
let wasm = wat::parse_str(WAT).unwrap();
let module = HostRef::new(Module::new(&store, &wasm).expect("failed to create module"));
let module = Module::new(&store, &wasm).expect("failed to create module");
let callback = Rc::new(Callback {
other: RefCell::new(None),

View File

@@ -1,8 +0,0 @@
(module
(type $t0 (func))
(import "" "imp" (func $.imp (type $t0)))
(func $run call $.imp)
(func $other)
(export "run" (func $run))
(export "other" (func $other))
)

View File

@@ -15,17 +15,16 @@ fn test_trap_return() -> Result<(), String> {
let store = Store::default();
let binary = parse_str(
r#"
(module
(func $hello (import "" "hello"))
(func (export "run") (call $hello))
)
"#,
(module
(func $hello (import "" "hello"))
(func (export "run") (call $hello))
)
"#,
)
.map_err(|e| format!("failed to parse WebAssembly text source: {}", e))?;
let module = HostRef::new(
Module::new(&store, &binary).map_err(|e| format!("failed to compile module: {}", e))?,
);
let module =
Module::new(&store, &binary).map_err(|e| format!("failed to compile module: {}", e))?;
let hello_type = FuncType::new(Box::new([]), Box::new([]));
let hello_func = HostRef::new(Func::new(&store, hello_type, Rc::new(HelloCallback)));