diff options
| author | Henry <mail@henrygressmann.de> | 2026-04-05 20:49:40 +0200 |
|---|---|---|
| committer | Henry <mail@henrygressmann.de> | 2026-04-05 20:49:40 +0200 |
| commit | 7d4dfd8ec65c78eb8154d89aa77dd71ac65015f6 (patch) | |
| tree | 7db6f65b35553a9994a3790e885721bdcbddf1ca /crates/parser/src/visit.rs | |
| parent | 66c9f7ab06dd67ac6e62321dd33943de7f9f9e57 (diff) | |
chore: cleanup
Diffstat (limited to 'crates/parser/src/visit.rs')
| -rw-r--r-- | crates/parser/src/visit.rs | 32 |
1 files changed, 7 insertions, 25 deletions
diff --git a/crates/parser/src/visit.rs b/crates/parser/src/visit.rs index 076f7c1..8313d9f 100644 --- a/crates/parser/src/visit.rs +++ b/crates/parser/src/visit.rs @@ -75,7 +75,7 @@ impl<R: WasmModuleResources> VisitSimdOperator<'_> for ValidateThenVisit<'_, R> pub(crate) fn process_operators_and_validate<R: WasmModuleResources>( validator: FuncValidator<R>, body: FunctionBody<'_>, - local_addr_map: Vec<u32>, + local_addr_map: Vec<u16>, ) -> Result<(Vec<Instruction>, WasmFunctionData, FuncValidatorAllocations)> { let mut reader = body.get_operators_reader()?; let remaining = reader.get_binary_reader().bytes_remaining(); @@ -148,7 +148,7 @@ pub(crate) struct FunctionBuilder<R: WasmModuleResources> { instructions: Vec<Instruction>, data: FunctionDataBuilder, ctx_stack: Vec<LoweringCtx>, - local_addr_map: Vec<u32>, + local_addr_map: Vec<u16>, errors: Vec<crate::ParseError>, } @@ -244,13 +244,7 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild } fn visit_local_get(&mut self, idx: u32) -> Self::Output { - let Ok(resolved_idx) = self.local_addr_map[idx as usize].try_into() else { - self.errors.push(crate::ParseError::UnsupportedOperator( - "Local index is too large, tinywasm does not support local indexes that large".to_string(), - )); - return; - }; - + let resolved_idx = self.local_addr_map[idx as usize]; if let Some(t) = self.validator.get_local_type(idx) { match t { wasmparser::ValType::I32 | wasmparser::ValType::F32 => { @@ -270,13 +264,7 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild } fn visit_local_set(&mut self, idx: u32) -> Self::Output { - let Ok(resolved_idx) = self.local_addr_map[idx as usize].try_into() else { - self.errors.push(crate::ParseError::UnsupportedOperator( - "Local index is too large, tinywasm does not support local indexes that large".to_string(), - )); - return; - }; - + let resolved_idx = self.local_addr_map[idx as usize]; if let Some(Some(t)) = self.validator.get_operand_type(0) { self.instructions.push(match t { wasmparser::ValType::I32 => Instruction::LocalSet32(resolved_idx), @@ -290,13 +278,7 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild } fn visit_local_tee(&mut self, idx: u32) -> Self::Output { - let Ok(resolved_idx) = self.local_addr_map[idx as usize].try_into() else { - self.errors.push(crate::ParseError::UnsupportedOperator( - "Local index is too large, tinywasm does not support local indexes that large".to_string(), - )); - return; - }; - + let resolved_idx = self.local_addr_map[idx as usize]; if let Some(Some(t)) = self.validator.get_operand_type(0) { self.instructions.push(match t { wasmparser::ValType::I32 => Instruction::LocalTee32(resolved_idx), @@ -472,7 +454,7 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild fn visit_typed_select_multi(&mut self, tys: Vec<wasmparser::ValType>) -> Self::Output { let (c32, c64, c128, cref) = Self::label_keep_counts(&tys); - self.instructions.push(Instruction::SelectMulti(tinywasm_types::ValueCountsSmall { c32, c64, c128, cref })); + self.instructions.push(Instruction::SelectMulti(tinywasm_types::ValueCounts { c32, c64, c128, cref })); } fn visit_typed_select(&mut self, ty: wasmparser::ValType) -> Self::Output { @@ -588,7 +570,7 @@ impl<R: WasmModuleResources> FunctionBuilder<R> { self.validator.simd_visitor(offset) } - pub(crate) fn new(instr_capacity: usize, validator: FuncValidator<R>, local_addr_map: Vec<u32>) -> Self { + pub(crate) fn new(instr_capacity: usize, validator: FuncValidator<R>, local_addr_map: Vec<u16>) -> Self { Self { validator, local_addr_map, |
