Improved api

This commit is contained in:
Syrus
2020-05-02 00:51:06 -07:00
parent 163696e557
commit 337f00a12a
2 changed files with 12 additions and 9 deletions

View File

@@ -53,9 +53,7 @@ impl Instance {
pub fn new(module: &Module, resolver: &dyn Resolver) -> Result<Instance, InstantiationError> { pub fn new(module: &Module, resolver: &dyn Resolver) -> Result<Instance, InstantiationError> {
let store = module.store(); let store = module.store();
let handle = store let handle = module.instantiate(resolver)?;
.engine()
.instantiate(module.compiled_module(), resolver)?;
let exports = module let exports = module
.exports() .exports()

View File

@@ -1,11 +1,13 @@
use crate::store::Store; use crate::store::Store;
use crate::types::{ExportType, ImportType}; use crate::types::{ExportType, ImportType};
use crate::InstantiationError;
use std::io; use std::io;
use std::path::Path; use std::path::Path;
use std::sync::Arc; use std::sync::Arc;
use thiserror::Error; use thiserror::Error;
use wasmer_compiler::{CompileError, WasmError}; use wasmer_compiler::{CompileError, WasmError};
use wasmer_jit::{CompiledModule, DeserializeError, SerializeError}; use wasmer_jit::{CompiledModule, DeserializeError, Resolver, SerializeError};
use wasmer_runtime::InstanceHandle;
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum IoCompileError { pub enum IoCompileError {
@@ -143,7 +145,7 @@ impl Module {
/// let serialized = module.serialize()?; /// let serialized = module.serialize()?;
/// ``` /// ```
pub fn serialize(&self) -> Result<Vec<u8>, SerializeError> { pub fn serialize(&self) -> Result<Vec<u8>, SerializeError> {
self.store.engine().serialize(self.compiled_module()) self.store.engine().serialize(&self.compiled)
} }
/// Deserializes a a serialized Module binary into a `Module`. /// Deserializes a a serialized Module binary into a `Module`.
@@ -178,8 +180,11 @@ impl Module {
} }
} }
pub(crate) fn compiled_module(&self) -> &CompiledModule { pub(crate) fn instantiate(
&self.compiled &self,
resolver: &dyn Resolver,
) -> Result<InstanceHandle, InstantiationError> {
self.store.engine().instantiate(&self.compiled, resolver)
} }
/// Returns the name of the current module. /// Returns the name of the current module.
@@ -237,7 +242,7 @@ impl Module {
/// } /// }
/// ``` /// ```
pub fn imports<'a>(&'a self) -> impl Iterator<Item = ImportType> + 'a { pub fn imports<'a>(&'a self) -> impl Iterator<Item = ImportType> + 'a {
self.compiled.module_ref().imports() self.compiled.module().imports()
} }
/// Returns an iterator over the exported types in the Module. /// Returns an iterator over the exported types in the Module.
@@ -260,7 +265,7 @@ impl Module {
/// } /// }
/// ``` /// ```
pub fn exports<'a>(&'a self) -> impl Iterator<Item = ExportType> + 'a { pub fn exports<'a>(&'a self) -> impl Iterator<Item = ExportType> + 'a {
self.compiled.module_ref().exports() self.compiled.module().exports()
} }
pub fn store(&self) -> &Store { pub fn store(&self) -> &Store {