diff --git a/crates/wasm-backend-traits/src/lib.rs b/crates/wasm-backend-traits/src/lib.rs index 51ec529b..d7c51dbc 100644 --- a/crates/wasm-backend-traits/src/lib.rs +++ b/crates/wasm-backend-traits/src/lib.rs @@ -66,15 +66,10 @@ pub trait Exports { name: &str, ) -> wasmer_core::error::ResolveResult; - fn get_func<'a, Args: wasmer_core::types::WasmExternType, Rets: wasmer_core::types::WasmExternType>( + fn get_func_no_args<'a, Rets: wasmer_core::typed_func::WasmTypeList + 'a>( &'a self, name: &str, - ) -> wasmer_core::error::ResolveResult ()/*wasmer_core::error::RuntimeResult*/ + 'a>>;// wasmer_core::error::ResolveResult wasmer_core::error::RuntimeResult + 'a>>; - - fn get_func2<'a, Args>( - &'a self, - name: &str, - ) -> Box ()>; + ) -> wasmer_core::error::ResolveResult wasmer_core::error::RuntimeResult + 'a>>; } pub enum Export { diff --git a/crates/wasmer-backend/src/lib.rs b/crates/wasmer-backend/src/lib.rs index 871a555a..88adc6ed 100644 --- a/crates/wasmer-backend/src/lib.rs +++ b/crates/wasmer-backend/src/lib.rs @@ -20,6 +20,7 @@ use wasmer_core::error::{ResolveError, ResolveResult}; use wasmer_core::fault::raw::longjmp; use wasmer_core::Func; use wasmer_core::module::ExportIndex; +use wasmer_core::typed_func::WasmTypeList; //use wasmer_core::prelude::vm::Ctx; use wasmer_core::types::{FuncSig, LocalOrImport, WasmExternType}; use wasmer_wasi::state::WasiState; @@ -237,30 +238,25 @@ impl Exports for WasmerInstance { self.instance.exports.get(name) } - fn get_func<'a, Args: WasmExternType, Rets: WasmExternType>( + fn get_func_no_args<'a, Rets: WasmTypeList + 'a>( &'a self, name: &str, - ) -> wasmer_core::error::ResolveResult () +'a>> { + ) -> wasmer_core::error::ResolveResult< + Box wasmer_core::error::RuntimeResult + 'a>, + > { self.instance .exports - .get::>(name) - .map(|_| { - let func = |args: i32| -> () {}; - - Box::new(func) + .get::>(name) + .map(|func| { + let func: Box wasmer_core::error::RuntimeResult + 'a> = + Box::new( + move || -> wasmer_core::error::RuntimeResult { + func.call() + }, + ); + func }) } - - fn get_func2<'a, Args>( - &'a self, - name: &str, - ) -> Box ()/*wasmer_core::error::RuntimeResult*/> { - let func = move |args: Args| -> () /*wasmer_core::error::RuntimeResult*/ { - //func.call(args) - }; - - Box::new(func) - } } fn export_from_wasmer_export( diff --git a/runtime/src/module/marine_module.rs b/runtime/src/module/marine_module.rs index d27fa9f7..39ffd940 100644 --- a/runtime/src/module/marine_module.rs +++ b/runtime/src/module/marine_module.rs @@ -148,8 +148,8 @@ impl MModule { // call _start to populate the WASI state of the module #[rustfmt::skip] - if let Ok(start_func) = wasmer_instance.exports().get::>("_start") { - start_func.call()?; + if let Ok(start_func) = wasmer_instance.exports().get_func_no_args::<'_, ()>("_start") { + start_func()?; } Ok(Self {