summaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/cli/Cargo.toml2
-rw-r--r--crates/parser/Cargo.toml2
-rw-r--r--crates/parser/src/visit.rs11
-rw-r--r--crates/tinywasm/src/instance.rs2
-rw-r--r--crates/tinywasm/src/runtime/interpreter/mod.rs17
-rw-r--r--crates/tinywasm/src/store/table.rs8
-rw-r--r--crates/types/src/instructions.rs4
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),