From 957b62bf1d6205409bac94a4ced790dfb8007e3d Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 15 Jul 2026 16:23:02 +0200 Subject: fix: 64 bit table addressing Signed-off-by: Henry --- crates/parser/src/conversion.rs | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) (limited to 'crates/parser/src/conversion.rs') diff --git a/crates/parser/src/conversion.rs b/crates/parser/src/conversion.rs index 34dcdfd..cfc0e84 100644 --- a/crates/parser/src/conversion.rs +++ b/crates/parser/src/conversion.rs @@ -60,8 +60,11 @@ pub(crate) fn convert_module_import(import: wasmparser::Import<'_>) -> Result ImportKind::Function(ty), wasmparser::TypeRef::Table(ty) => { let element_type = convert_reftype(ty.element_type)?; - let (size_initial, size_max) = convert_table_limits(ty)?; - ImportKind::Table(TableType { element_type, size_initial, size_max }) + ImportKind::Table(if ty.table64 { + TableType::new64(element_type, ty.initial, ty.maximum) + } else { + TableType::new(element_type, ty.initial, ty.maximum) + }) } wasmparser::TypeRef::Memory(ty) => ImportKind::Memory(convert_module_memory(ty)), wasmparser::TypeRef::Global(ty) => { @@ -87,25 +90,6 @@ pub(crate) fn convert_module_memory(memory: wasmparser::MemoryType) -> MemoryTyp ) } -pub(crate) fn convert_module_table(table: wasmparser::Table<'_>) -> Result { - let (size_initial, size_max) = convert_table_limits(table.ty)?; - Ok(TableType { element_type: convert_reftype(table.ty.element_type)?, size_initial, size_max }) -} - -fn convert_table_limits(table: wasmparser::TableType) -> Result<(u32, Option)> { - let size_initial = table.initial.try_into().map_err(|_| { - crate::ParseError::UnsupportedOperator(format!("Table size initial is too large: {}", table.initial)) - })?; - let size_max = table - .maximum - .map(|max| { - u32::try_from(max) - .map_err(|_| crate::ParseError::UnsupportedOperator(format!("Table size max is too large: {max}"))) - }) - .transpose()?; - Ok((size_initial, size_max)) -} - pub(crate) fn convert_module_globals( globals: wasmparser::SectionLimited<'_, wasmparser::Global<'_>>, ) -> Result> { -- cgit v1.3.1