Publish with_externvals constructor.

This commit is contained in:
Sergey Pepyakin 2018-03-29 16:14:04 +03:00
parent a6b5574704
commit ade9b32d1c
1 changed files with 14 additions and 9 deletions

View File

@ -383,10 +383,16 @@ impl ModuleInstance {
Ok(instance)
}
fn instantiate_with_externvals(
loaded_module: &Module,
/// Instantiate a module with given [external values][ExternVal] as imports.
///
/// See [new] for details.
///
/// [new]: #method.new
/// [ExternVal]: https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval
pub fn with_externvals<'a>(
loaded_module: &'a Module,
extern_vals: &[ExternVal],
) -> Result<ModuleRef, Error> {
) -> Result<NotStartedModuleRef<'a>, Error> {
let module = loaded_module.module();
let module_ref = ModuleInstance::alloc_module(loaded_module, extern_vals)?;
@ -433,7 +439,10 @@ impl ModuleInstance {
memory_inst.set(offset_val, data_segment.value())?;
}
Ok(module_ref)
Ok(NotStartedModuleRef {
loaded_module,
instance: module_ref,
})
}
/// Instantiate a [module][`Module`].
@ -535,11 +544,7 @@ impl ModuleInstance {
extern_vals.push(extern_val);
}
let instance = Self::instantiate_with_externvals(loaded_module, &extern_vals)?;
Ok(NotStartedModuleRef {
loaded_module,
instance,
})
Self::with_externvals(loaded_module, &extern_vals)
}
/// Invoke exported function by a name.