From 1f6ac248e106f77dee20af26567c61b2a35b75ba Mon Sep 17 00:00:00 2001 From: Henry Gressmann Date: Fri, 26 Jan 2024 19:14:54 +0100 Subject: fix: import param order Signed-off-by: Henry Gressmann --- crates/tinywasm/src/runtime/stack/value_stack.rs | 10 +--------- examples/rust/src/hello.rs | 4 ++-- examples/wasm-rust.rs | 6 +++--- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/crates/tinywasm/src/runtime/stack/value_stack.rs b/crates/tinywasm/src/runtime/stack/value_stack.rs index bb4e398..f8f0951 100644 --- a/crates/tinywasm/src/runtime/stack/value_stack.rs +++ b/crates/tinywasm/src/runtime/stack/value_stack.rs @@ -1,6 +1,5 @@ use core::ops::Range; -use crate::log; use crate::{runtime::RawWasmValue, Error, Result}; use alloc::vec::Vec; use tinywasm_types::{ValType, WasmValue}; @@ -85,14 +84,7 @@ impl ValueStack { #[inline] pub(crate) fn pop_params(&mut self, types: &[ValType]) -> Result> { - log::info!("pop_params: types={:?}", types); - log::info!("stack={:?}", self.stack); - - let mut res = Vec::with_capacity(types.len()); - for ty in types.iter() { - res.push(self.pop()?.attach_type(*ty)); - } - + let res = self.pop_n_rev(types.len())?.iter().zip(types.iter()).map(|(v, ty)| v.attach_type(*ty)).collect(); Ok(res) } diff --git a/examples/rust/src/hello.rs b/examples/rust/src/hello.rs index 6bb6d97..c8e2ac3 100644 --- a/examples/rust/src/hello.rs +++ b/examples/rust/src/hello.rs @@ -2,7 +2,7 @@ #[link(wasm_import_module = "env")] extern "C" { - fn print_utf8(location: i32, len: i32); + fn print_utf8(location: i64, len: i32); } const ARG: &[u8] = &[0u8; 100]; @@ -23,6 +23,6 @@ pub unsafe extern "C" fn hello(len: i32) { let res = format!("Hello, {}!", arg).as_bytes().to_vec(); let len = res.len() as i32; - let ptr = res.leak().as_ptr() as i32; + let ptr = res.leak().as_ptr() as i64; print_utf8(ptr, len); } diff --git a/examples/wasm-rust.rs b/examples/wasm-rust.rs index 6580bd5..468ab2e 100644 --- a/examples/wasm-rust.rs +++ b/examples/wasm-rust.rs @@ -55,10 +55,10 @@ fn hello() -> Result<()> { imports.define( "env", "print_utf8", - Extern::typed_func(|mut ctx: FuncContext<'_>, args: (i32, i32)| { + Extern::typed_func(|mut ctx: FuncContext<'_>, args: (i64, i32)| { let mem = ctx.memory("memory")?; - let ptr = args.1 as usize; - let len = args.0 as usize; + let ptr = args.0 as usize; + let len = args.1 as usize; let string = mem.load_string(ptr, len)?; println!("{}", string); Ok(()) -- cgit v1.3.1