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:
@@ -21,7 +21,7 @@ impl Instance {
|
||||
let py = gil.python();
|
||||
let exports = PyDict::new(py);
|
||||
let module = self.instance.borrow().module().clone();
|
||||
for (i, e) in module.borrow().exports().iter().enumerate() {
|
||||
for (i, e) in module.exports().iter().enumerate() {
|
||||
match e.ty() {
|
||||
wasmtime::ExternType::Func(ft) => {
|
||||
let mut args_types = Vec::new();
|
||||
|
||||
@@ -84,7 +84,7 @@ pub fn instantiate(
|
||||
let engine = wasmtime::Engine::new(&wasmtime::Config::new().wasm_multi_value(true));
|
||||
let store = wasmtime::Store::new(&engine);
|
||||
|
||||
let module = wasmtime::HostRef::new(wasmtime::Module::new(&store, wasm_data).map_err(err2py)?);
|
||||
let module = wasmtime::Module::new(&store, wasm_data).map_err(err2py)?;
|
||||
|
||||
let data = Rc::new(ModuleData::new(wasm_data).map_err(err2py)?);
|
||||
|
||||
@@ -99,7 +99,7 @@ pub fn instantiate(
|
||||
};
|
||||
|
||||
let mut imports: Vec<wasmtime::Extern> = Vec::new();
|
||||
for i in module.borrow().imports() {
|
||||
for i in module.imports() {
|
||||
let module_name = i.module();
|
||||
if let Some(m) = import_obj.get_item(module_name) {
|
||||
let e = find_export_in(m, &store, i.name())?;
|
||||
|
||||
@@ -4,5 +4,5 @@ use pyo3::prelude::*;
|
||||
|
||||
#[pyclass]
|
||||
pub struct Module {
|
||||
pub module: wasmtime::HostRef<wasmtime::Module>,
|
||||
pub module: wasmtime::Module,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user