diff options
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/cli/Cargo.toml | 2 | ||||
| -rw-r--r-- | crates/parser/Cargo.toml | 2 | ||||
| -rw-r--r-- | crates/parser/src/visit.rs | 11 | ||||
| -rw-r--r-- | crates/tinywasm/src/instance.rs | 2 | ||||
| -rw-r--r-- | crates/tinywasm/src/runtime/interpreter/mod.rs | 17 | ||||
| -rw-r--r-- | crates/tinywasm/src/store/table.rs | 8 | ||||
| -rw-r--r-- | crates/types/src/instructions.rs | 4 |
7 files changed, 15 insertions, 31 deletions
diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index d6f74af..6876e9f 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -19,7 +19,7 @@ argh="0.1" color-eyre={version="0.6", default-features=false} log="0.4" pretty_env_logger="0.5" -wast={version="209.0", optional=true} +wast={version="210.0", optional=true} [features] default=["wat"] diff --git a/crates/parser/Cargo.toml b/crates/parser/Cargo.toml index 72a5292..1f1d194 100644 --- a/crates/parser/Cargo.toml +++ b/crates/parser/Cargo.toml @@ -8,7 +8,7 @@ authors.workspace=true repository.workspace=true [dependencies] -wasmparser={version="0.209", default-features=false, features=["validate"]} +wasmparser={version="0.210", default-features=false, features=["validate"]} log={version="0.4", optional=true} tinywasm-types={version="0.7.0", path="../types", default-features=false} diff --git a/crates/parser/src/visit.rs b/crates/parser/src/visit.rs index c9176a4..f22e05b 100644 --- a/crates/parser/src/visit.rs +++ b/crates/parser/src/visit.rs @@ -126,12 +126,9 @@ impl<'a> wasmparser::VisitOperator<'a> for FunctionBuilder { visit_global_set, Instruction::GlobalSet, u32, visit_i32_const, Instruction::I32Const, i32, visit_i64_const, Instruction::I64Const, i64, - visit_call, Instruction::Call, u32 - } - - define_primitive_operands! { - visit_memory_size, Instruction::MemorySize, u32, u8, - visit_memory_grow, Instruction::MemoryGrow, u32, u8 + visit_call, Instruction::Call, u32, + visit_memory_size, Instruction::MemorySize, u32, + visit_memory_grow, Instruction::MemoryGrow, u32 } define_mem_operands! { @@ -482,7 +479,7 @@ impl<'a> wasmparser::VisitOperator<'a> for FunctionBuilder { self.instructions.extend(([Instruction::BrTable(def, instrs.len() as u32)].into_iter()).chain(instrs)); } - fn visit_call_indirect(&mut self, ty: u32, table: u32, _table_byte: u8) -> Self::Output { + fn visit_call_indirect(&mut self, ty: u32, table: u32) -> Self::Output { self.instructions.push(Instruction::CallIndirect(ty, table)) } diff --git a/crates/tinywasm/src/instance.rs b/crates/tinywasm/src/instance.rs index 4ad3d09..14baa1f 100644 --- a/crates/tinywasm/src/instance.rs +++ b/crates/tinywasm/src/instance.rs @@ -2,7 +2,7 @@ use alloc::{boxed::Box, format, rc::Rc, string::ToString}; use tinywasm_types::*; use crate::func::{FromWasmValueTuple, IntoWasmValueTuple}; -use crate::{Error, FuncHandle, FuncHandleTyped, Imports, MemoryRef, MemoryRefMut, Module, Result, Store}; +use crate::{Error, FuncHandle, FuncHandleTyped, GlobalRef, Imports, MemoryRef, MemoryRefMut, Module, Result, Store}; /// An instanciated WebAssembly module /// diff --git a/crates/tinywasm/src/runtime/interpreter/mod.rs b/crates/tinywasm/src/runtime/interpreter/mod.rs index ae6e632..be3f60a 100644 --- a/crates/tinywasm/src/runtime/interpreter/mod.rs +++ b/crates/tinywasm/src/runtime/interpreter/mod.rs @@ -86,8 +86,8 @@ impl<'store, 'stack> Executor<'store, 'stack> { RefNull(_) => self.exec_const(-1i64), RefIsNull => self.exec_ref_is_null()?, - MemorySize(addr, byte) => self.exec_memory_size(*addr, *byte)?, - MemoryGrow(addr, byte) => self.exec_memory_grow(*addr, *byte)?, + MemorySize(addr) => self.exec_memory_size(*addr)?, + MemoryGrow(addr) => self.exec_memory_grow(*addr)?, // Bulk memory operations MemoryCopy(from, to) => self.exec_memory_copy(*from, *to)?, @@ -542,20 +542,12 @@ impl<'store, 'stack> Executor<'store, 'stack> { self.stack.values.replace_top(|val| ((i32::from(val) == -1) as i32).into()) } - fn exec_memory_size(&mut self, addr: u32, byte: u8) -> Result<()> { - if unlikely(byte != 0) { - return Err(Error::UnsupportedFeature("memory.size with byte != 0".to_string())); - } - + fn exec_memory_size(&mut self, addr: u32) -> Result<()> { let mem = self.store.get_mem(self.module.resolve_mem_addr(addr)?)?; self.stack.values.push((mem.borrow().page_count() as i32).into()); Ok(()) } - fn exec_memory_grow(&mut self, addr: u32, byte: u8) -> Result<()> { - if unlikely(byte != 0) { - return Err(Error::UnsupportedFeature("memory.grow with byte != 0".to_string())); - } - + fn exec_memory_grow(&mut self, addr: u32) -> Result<()> { let mut mem = self.store.get_mem(self.module.resolve_mem_addr(addr)?)?.borrow_mut(); let prev_size = mem.page_count() as i32; let pages_delta = self.stack.values.last_mut()?; @@ -563,7 +555,6 @@ impl<'store, 'stack> Executor<'store, 'stack> { Some(_) => prev_size.into(), None => (-1).into(), }; - Ok(()) } diff --git a/crates/tinywasm/src/store/table.rs b/crates/tinywasm/src/store/table.rs index b262ca8..5ddb9c1 100644 --- a/crates/tinywasm/src/store/table.rs +++ b/crates/tinywasm/src/store/table.rs @@ -112,14 +112,10 @@ impl TableInstance { let len = n as usize + self.elements.len(); let max = self.kind.size_max.unwrap_or(MAX_TABLE_SIZE) as usize; if len > max { - return Err(Error::Trap(crate::Trap::TableOutOfBounds { - offset: len as usize, - len: 1, - max: self.elements.len(), - })); + return Err(Error::Trap(crate::Trap::TableOutOfBounds { offset: len, len: 1, max: self.elements.len() })); } - self.elements.resize(len as usize, init); + self.elements.resize(len, init); Ok(()) } diff --git a/crates/types/src/instructions.rs b/crates/types/src/instructions.rs index d939f20..d67ba83 100644 --- a/crates/types/src/instructions.rs +++ b/crates/types/src/instructions.rs @@ -156,8 +156,8 @@ pub enum Instruction { I64Store8 { offset: u64, mem_addr: MemAddr }, I64Store16 { offset: u64, mem_addr: MemAddr }, I64Store32 { offset: u64, mem_addr: MemAddr }, - MemorySize(MemAddr, u8), - MemoryGrow(MemAddr, u8), + MemorySize(MemAddr), + MemoryGrow(MemAddr), // > Constants I32Const(i32), |
