Upgrade wasmparser to 0.58.0 (#1942)
* Upgrade wasmparser to 0.58.0 * Enable more spec tests
This commit is contained in:
@@ -12,7 +12,7 @@ keywords = ["webassembly", "wasm"]
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
wasmparser = { version = "0.57.0", default-features = false }
|
||||
wasmparser = { version = "0.58.0", default-features = false }
|
||||
cranelift-codegen = { path = "../codegen", version = "0.65.0", default-features = false }
|
||||
cranelift-entity = { path = "../entity", version = "0.65.0" }
|
||||
cranelift-frontend = { path = "../frontend", version = "0.65.0", default-features = false }
|
||||
|
||||
@@ -1575,7 +1575,10 @@ pub fn translate_operator<FE: FuncEnvironment + ?Sized>(
|
||||
| Operator::I32x4WidenLowI16x8S { .. }
|
||||
| Operator::I32x4WidenHighI16x8S { .. }
|
||||
| Operator::I32x4WidenLowI16x8U { .. }
|
||||
| Operator::I32x4WidenHighI16x8U { .. } => {
|
||||
| Operator::I32x4WidenHighI16x8U { .. }
|
||||
| Operator::I8x16Bitmask
|
||||
| Operator::I16x8Bitmask
|
||||
| Operator::I32x4Bitmask => {
|
||||
return Err(wasm_unsupported!("proposed SIMD operator {:?}", op));
|
||||
}
|
||||
|
||||
@@ -2007,7 +2010,8 @@ fn type_of(operator: &Operator) -> Type {
|
||||
| Operator::I8x16MinU
|
||||
| Operator::I8x16MaxS
|
||||
| Operator::I8x16MaxU
|
||||
| Operator::I8x16RoundingAverageU => I8X16,
|
||||
| Operator::I8x16RoundingAverageU
|
||||
| Operator::I8x16Bitmask => I8X16,
|
||||
|
||||
Operator::I16x8Splat
|
||||
| Operator::V16x8LoadSplat { .. }
|
||||
@@ -2041,7 +2045,8 @@ fn type_of(operator: &Operator) -> Type {
|
||||
| Operator::I16x8MaxS
|
||||
| Operator::I16x8MaxU
|
||||
| Operator::I16x8RoundingAverageU
|
||||
| Operator::I16x8Mul => I16X8,
|
||||
| Operator::I16x8Mul
|
||||
| Operator::I16x8Bitmask => I16X8,
|
||||
|
||||
Operator::I32x4Splat
|
||||
| Operator::V32x4LoadSplat { .. }
|
||||
@@ -2071,7 +2076,8 @@ fn type_of(operator: &Operator) -> Type {
|
||||
| Operator::I32x4MaxS
|
||||
| Operator::I32x4MaxU
|
||||
| Operator::F32x4ConvertI32x4S
|
||||
| Operator::F32x4ConvertI32x4U => I32X4,
|
||||
| Operator::F32x4ConvertI32x4U
|
||||
| Operator::I32x4Bitmask => I32X4,
|
||||
|
||||
Operator::I64x2Splat
|
||||
| Operator::V64x2LoadSplat { .. }
|
||||
|
||||
@@ -71,6 +71,11 @@ pub fn translate_module<'data>(
|
||||
environ.reserve_passive_data(count)?;
|
||||
}
|
||||
|
||||
SectionContent::Module(_)
|
||||
| SectionContent::ModuleCode(_)
|
||||
| SectionContent::Instance(_)
|
||||
| SectionContent::Alias(_) => unimplemented!("module linking not implemented yet"),
|
||||
|
||||
SectionContent::Custom {
|
||||
name,
|
||||
binary,
|
||||
|
||||
@@ -26,7 +26,7 @@ use wasmparser::{
|
||||
ElementKind, ElementSectionReader, Export, ExportSectionReader, ExternalKind,
|
||||
FunctionSectionReader, GlobalSectionReader, GlobalType, ImportSectionEntryType,
|
||||
ImportSectionReader, MemorySectionReader, MemoryType, NameSectionReader, Naming, NamingReader,
|
||||
Operator, TableSectionReader, Type, TypeSectionReader,
|
||||
Operator, TableSectionReader, Type, TypeDef, TypeSectionReader,
|
||||
};
|
||||
|
||||
/// Parses the Type section of the wasm module.
|
||||
@@ -40,22 +40,26 @@ pub fn parse_type_section(
|
||||
environ.reserve_signatures(count)?;
|
||||
|
||||
for entry in types {
|
||||
let wasm_func_ty = entry?;
|
||||
let mut sig = Signature::new(ModuleEnvironment::target_config(environ).default_call_conv);
|
||||
sig.params.extend(wasm_func_ty.params.iter().map(|ty| {
|
||||
let cret_arg: ir::Type = type_to_type(*ty, environ)
|
||||
.expect("only numeric types are supported in function signatures");
|
||||
AbiParam::new(cret_arg)
|
||||
}));
|
||||
sig.returns.extend(wasm_func_ty.returns.iter().map(|ty| {
|
||||
let cret_arg: ir::Type = type_to_type(*ty, environ)
|
||||
.expect("only numeric types are supported in function signatures");
|
||||
AbiParam::new(cret_arg)
|
||||
}));
|
||||
environ.declare_signature(&wasm_func_ty, sig)?;
|
||||
module_translation_state
|
||||
.wasm_types
|
||||
.push((wasm_func_ty.params, wasm_func_ty.returns));
|
||||
if let Ok(TypeDef::Func(wasm_func_ty)) = entry {
|
||||
let mut sig =
|
||||
Signature::new(ModuleEnvironment::target_config(environ).default_call_conv);
|
||||
sig.params.extend(wasm_func_ty.params.iter().map(|ty| {
|
||||
let cret_arg: ir::Type = type_to_type(*ty, environ)
|
||||
.expect("only numeric types are supported in function signatures");
|
||||
AbiParam::new(cret_arg)
|
||||
}));
|
||||
sig.returns.extend(wasm_func_ty.returns.iter().map(|ty| {
|
||||
let cret_arg: ir::Type = type_to_type(*ty, environ)
|
||||
.expect("only numeric types are supported in function signatures");
|
||||
AbiParam::new(cret_arg)
|
||||
}));
|
||||
environ.declare_signature(&wasm_func_ty, sig)?;
|
||||
module_translation_state
|
||||
.wasm_types
|
||||
.push((wasm_func_ty.params, wasm_func_ty.returns));
|
||||
} else {
|
||||
unimplemented!("module linking not implemented yet")
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
@@ -70,7 +74,7 @@ pub fn parse_import_section<'data>(
|
||||
for entry in imports {
|
||||
let import = entry?;
|
||||
let module_name = import.module;
|
||||
let field_name = import.field;
|
||||
let field_name = import.field.unwrap(); // TODO Handle error when module linking is implemented.
|
||||
|
||||
match import.ty {
|
||||
ImportSectionEntryType::Function(sig) => {
|
||||
@@ -80,6 +84,9 @@ pub fn parse_import_section<'data>(
|
||||
field_name,
|
||||
)?;
|
||||
}
|
||||
ImportSectionEntryType::Module(_sig) | ImportSectionEntryType::Instance(_sig) => {
|
||||
unimplemented!("module linking not implemented yet")
|
||||
}
|
||||
ImportSectionEntryType::Memory(MemoryType {
|
||||
limits: ref memlimits,
|
||||
shared,
|
||||
@@ -268,6 +275,9 @@ pub fn parse_export_section<'data>(
|
||||
ExternalKind::Global => {
|
||||
environ.declare_global_export(GlobalIndex::new(index), field)?
|
||||
}
|
||||
ExternalKind::Type | ExternalKind::Module | ExternalKind::Instance => {
|
||||
unimplemented!("module linking not implemented yet")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user