Update wasmparser dependency (#912)

* Update wasmparser dependency

Closes #905

* Fix lightbeam compilation
This commit is contained in:
Alex Crichton
2020-02-06 12:25:32 -06:00
committed by GitHub
parent c860edc14f
commit 9dffaf9d57
12 changed files with 111 additions and 185 deletions

36
Cargo.lock generated
View File

@@ -896,7 +896,7 @@ dependencies = [
"smallvec", "smallvec",
"thiserror", "thiserror",
"typemap", "typemap",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"wat", "wat",
] ]
@@ -1859,12 +1859,6 @@ version = "0.39.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c702914acda5feeeffbc29e4d953e5b9ce79d8b98da4dbf18a77086e116c5470" checksum = "c702914acda5feeeffbc29e4d953e5b9ce79d8b98da4dbf18a77086e116c5470"
[[package]]
name = "wasmparser"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1527c84a5bd585215f29c06b0e2a5274e478ad4dfc970d26ffad66fdc6cb311d"
[[package]] [[package]]
name = "wasmparser" name = "wasmparser"
version = "0.47.0" version = "0.47.0"
@@ -1872,13 +1866,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1add8db5a53a2f64f13418b241982c4ab533d7a9e1e8a5dcadccce633d8d393b" checksum = "1add8db5a53a2f64f13418b241982c4ab533d7a9e1e8a5dcadccce633d8d393b"
[[package]] [[package]]
name = "wasmprinter" name = "wasmparser"
version = "0.2.0" version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89101d1890503f4d87cc0512ff2568c00d6c13ed9de3880569e5c9c21556c06c" checksum = "6860a452de64c9f5fb5af92a630b3894c0414a5f6a113f184ad2376d7a39fb40"
[[package]]
name = "wasmprinter"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8bd423d45b95fcee11775472bfdce66c63c45ada23c1b338e0a63d623a6c475b"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"wasmparser 0.42.1", "wasmparser 0.51.0",
] ]
[[package]] [[package]]
@@ -1897,7 +1897,7 @@ dependencies = [
"rustc-demangle", "rustc-demangle",
"target-lexicon", "target-lexicon",
"wasi-common", "wasi-common",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"wasmtime-environ", "wasmtime-environ",
"wasmtime-jit", "wasmtime-jit",
"wasmtime-runtime", "wasmtime-runtime",
@@ -1951,7 +1951,7 @@ dependencies = [
"more-asserts", "more-asserts",
"target-lexicon", "target-lexicon",
"thiserror", "thiserror",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"wasmtime-environ", "wasmtime-environ",
] ]
@@ -1985,7 +1985,7 @@ dependencies = [
"tempfile", "tempfile",
"thiserror", "thiserror",
"toml", "toml",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"winapi", "winapi",
"zstd", "zstd",
] ]
@@ -2009,7 +2009,7 @@ dependencies = [
"binaryen", "binaryen",
"env_logger 0.7.1", "env_logger 0.7.1",
"log", "log",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"wasmprinter", "wasmprinter",
"wasmtime", "wasmtime",
"wat", "wat",
@@ -2022,7 +2022,7 @@ dependencies = [
"anyhow", "anyhow",
"walrus", "walrus",
"wasm-webidl-bindings", "wasm-webidl-bindings",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"wasmtime", "wasmtime",
"wasmtime-environ", "wasmtime-environ",
"wasmtime-jit", "wasmtime-jit",
@@ -2045,7 +2045,7 @@ dependencies = [
"region", "region",
"target-lexicon", "target-lexicon",
"thiserror", "thiserror",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"wasmtime-debug", "wasmtime-debug",
"wasmtime-environ", "wasmtime-environ",
"wasmtime-runtime", "wasmtime-runtime",
@@ -2070,7 +2070,7 @@ dependencies = [
"pyo3", "pyo3",
"region", "region",
"target-lexicon", "target-lexicon",
"wasmparser 0.47.0", "wasmparser 0.51.0",
"wasmtime", "wasmtime",
"wasmtime-interface-types", "wasmtime-interface-types",
"wasmtime-wasi", "wasmtime-wasi",

View File

@@ -12,7 +12,7 @@ edition = "2018"
wasmtime-runtime = { path = "../runtime", version = "0.9.0" } wasmtime-runtime = { path = "../runtime", version = "0.9.0" }
wasmtime-environ = { path = "../environ", version = "0.9.0" } wasmtime-environ = { path = "../environ", version = "0.9.0" }
wasmtime-jit = { path = "../jit", version = "0.9.0" } wasmtime-jit = { path = "../jit", version = "0.9.0" }
wasmparser = { version = "0.47.0", default-features = false } wasmparser = "0.51.0"
target-lexicon = { version = "0.10.0", default-features = false } target-lexicon = { version = "0.10.0", default-features = false }
anyhow = "1.0.19" anyhow = "1.0.19"
region = "2.0.0" region = "2.0.0"

View File

@@ -13,7 +13,7 @@ edition = "2018"
[dependencies] [dependencies]
gimli = "0.19.0" gimli = "0.19.0"
wasmparser = "0.47.0" wasmparser = "0.51.0"
faerie = "0.14.0" faerie = "0.14.0"
wasmtime-environ = { path = "../environ", version = "0.9.0" } wasmtime-environ = { path = "../environ", version = "0.9.0" }
target-lexicon = { version = "0.10.0", default-features = false } target-lexicon = { version = "0.10.0", default-features = false }

View File

@@ -16,7 +16,7 @@ anyhow = "1.0"
cranelift-codegen = { version = "0.56", features = ["enable-serde"] } cranelift-codegen = { version = "0.56", features = ["enable-serde"] }
cranelift-entity = { version = "0.56", features = ["enable-serde"] } cranelift-entity = { version = "0.56", features = ["enable-serde"] }
cranelift-wasm = { version = "0.56", features = ["enable-serde"] } cranelift-wasm = { version = "0.56", features = ["enable-serde"] }
wasmparser = "0.47.0" wasmparser = "0.51.0"
lightbeam = { path = "../lightbeam", optional = true, version = "0.9.0" } lightbeam = { path = "../lightbeam", optional = true, version = "0.9.0" }
indexmap = "1.0.2" indexmap = "1.0.2"
rayon = "1.2.1" rayon = "1.2.1"

View File

@@ -14,7 +14,7 @@ arbitrary = { version = "0.3.2", features = ["derive"] }
binaryen = "0.8.2" binaryen = "0.8.2"
env_logger = { version = "0.7.1", optional = true } env_logger = { version = "0.7.1", optional = true }
log = "0.4.8" log = "0.4.8"
wasmparser = "0.47.0" wasmparser = "0.51.0"
wasmprinter = "0.2.0" wasmprinter = "0.2.0"
wasmtime = { path = "../api", version = "0.9.0" } wasmtime = { path = "../api", version = "0.9.0" }

View File

@@ -13,7 +13,7 @@ edition = "2018"
[dependencies] [dependencies]
anyhow = "1.0.19" anyhow = "1.0.19"
walrus = "0.13" walrus = "0.13"
wasmparser = { version = "0.47.0", default-features = false } wasmparser = "0.51.0"
wasm-webidl-bindings = "0.6" wasm-webidl-bindings = "0.6"
wasmtime = { path = "../api", version = "0.9.0" } wasmtime = { path = "../api", version = "0.9.0" }
wasmtime-jit = { path = "../jit", version = "0.9.0" } wasmtime-jit = { path = "../jit", version = "0.9.0" }

View File

@@ -22,7 +22,7 @@ wasmtime-debug = { path = "../debug", version = "0.9.0" }
region = "2.0.0" region = "2.0.0"
thiserror = "1.0.4" thiserror = "1.0.4"
target-lexicon = { version = "0.10.0", default-features = false } target-lexicon = { version = "0.10.0", default-features = false }
wasmparser = { version = "0.47.0", default-features = false } wasmparser = "0.51.0"
more-asserts = "0.2.1" more-asserts = "0.2.1"
anyhow = "1.0" anyhow = "1.0"
cfg-if = "0.1.9" cfg-if = "0.1.9"

View File

@@ -14,7 +14,7 @@ edition = "2018"
smallvec = "1.0.0" smallvec = "1.0.0"
dynasm = "0.5.2" dynasm = "0.5.2"
dynasmrt = "0.5.2" dynasmrt = "0.5.2"
wasmparser = "0.47.0" wasmparser = "0.51.0"
memoffset = "0.5.3" memoffset = "0.5.3"
itertools = "0.8.2" itertools = "0.8.2"
capstone = "0.6.0" capstone = "0.6.0"

View File

@@ -19,8 +19,7 @@ pub enum Error {
impl From<BinaryReaderError> for Error { impl From<BinaryReaderError> for Error {
fn from(e: BinaryReaderError) -> Self { fn from(e: BinaryReaderError) -> Self {
let BinaryReaderError { message, offset } = e; Error::Input(format!("At wasm offset {}: {}", e.offset(), e.message()))
Error::Input(format!("At wasm offset {}: {}", offset, message))
} }
} }

View File

@@ -73,10 +73,7 @@ where
let mut body = Vec::new(); let mut body = Vec::new();
for i in microwasm_conv { for i in microwasm_conv {
match i { body.extend(i?);
Ok(v) => body.extend(v),
Err(e) => return Err(Error::Microwasm(e.message.to_string())),
};
} }
translate(session, reloc_sink, func_idx, body)?; translate(session, reloc_sink, func_idx, body)?;

View File

@@ -8,7 +8,7 @@ use std::{
ops::RangeInclusive, ops::RangeInclusive,
}; };
use wasmparser::{ use wasmparser::{
BinaryReaderError, FunctionBody, Ieee32 as WasmIeee32, Ieee64 as WasmIeee64, FunctionBody, Ieee32 as WasmIeee32, Ieee64 as WasmIeee64,
MemoryImmediate as WasmMemoryImmediate, Operator as WasmOperator, OperatorsReader, MemoryImmediate as WasmMemoryImmediate, Operator as WasmOperator, OperatorsReader,
}; };
@@ -275,7 +275,7 @@ pub const SF32: SignfulType = Type::Float(Size::_32);
pub const SF64: SignfulType = Type::Float(Size::_64); pub const SF64: SignfulType = Type::Float(Size::_64);
impl SignlessType { impl SignlessType {
pub fn from_wasm(other: wasmparser::Type) -> Result<Self, BinaryReaderError> { pub fn from_wasm(other: wasmparser::Type) -> Result<Self, Error> {
use wasmparser::Type; use wasmparser::Type;
match other { match other {
@@ -283,27 +283,22 @@ impl SignlessType {
Type::I64 => Ok(I64), Type::I64 => Ok(I64),
Type::F32 => Ok(F32), Type::F32 => Ok(F32),
Type::F64 => Ok(F64), Type::F64 => Ok(F64),
Type::EmptyBlockType => Err(BinaryReaderError { Type::EmptyBlockType => Err(Error::Microwasm(
message: "SignlessType with EmptyBlockType", "SignlessType with EmptyBlockType".to_string(),
offset: -1isize as usize, )),
}), _ => Err(Error::Microwasm("SignlessType unimplemented".to_string())),
_ => Err(BinaryReaderError {
message: "SignlessType unimplemented",
offset: -1isize as usize,
}),
} }
} }
} }
fn create_returns_from_wasm_type( fn create_returns_from_wasm_type(
ty: wasmparser::TypeOrFuncType, ty: wasmparser::TypeOrFuncType,
) -> Result<Vec<SignlessType>, BinaryReaderError> { ) -> Result<Vec<SignlessType>, Error> {
match ty { match ty {
wasmparser::TypeOrFuncType::Type(ty) => Ok(Vec::from_iter(Type::from_wasm(ty))), wasmparser::TypeOrFuncType::Type(ty) => Ok(Vec::from_iter(Type::from_wasm(ty))),
wasmparser::TypeOrFuncType::FuncType(_) => Err(BinaryReaderError { wasmparser::TypeOrFuncType::FuncType(_) => {
message: "Unsupported func type", Err(Error::Microwasm("Unsupported func type".to_string()))
offset: -1isize as usize, }
}),
} }
} }
@@ -1106,7 +1101,7 @@ where
Ok(out) Ok(out)
} }
fn op_sig(&self, op: &WasmOperator) -> Result<OpSig, BinaryReaderError> { fn op_sig(&self, op: &WasmOperator) -> Result<OpSig, Error> {
use self::SigT::T; use self::SigT::T;
use std::iter::{empty as none, once}; use std::iter::{empty as none, once};
@@ -1237,16 +1232,10 @@ where
WasmOperator::F64Const { .. } => sig!(() -> (F64)), WasmOperator::F64Const { .. } => sig!(() -> (F64)),
WasmOperator::RefNull => { WasmOperator::RefNull => {
return Err(BinaryReaderError { return Err(Error::Microwasm("RefNull unimplemented".to_string()))
message: "RefNull unimplemented",
offset: -1isize as usize,
})
} }
WasmOperator::RefIsNull => { WasmOperator::RefIsNull => {
return Err(BinaryReaderError { return Err(Error::Microwasm("RefIsNull unimplemented".to_string()))
message: "RefIsNull unimplemented",
offset: -1isize as usize,
})
} }
// All comparison operators remove 2 elements and push 1 // All comparison operators remove 2 elements and push 1
@@ -1382,12 +1371,7 @@ where
WasmOperator::I64Extend16S => sig!((I32) -> (I64)), WasmOperator::I64Extend16S => sig!((I32) -> (I64)),
WasmOperator::I64Extend32S => sig!((I32) -> (I64)), WasmOperator::I64Extend32S => sig!((I32) -> (I64)),
_ => { _ => return Err(Error::Microwasm("Opcode Unimplemented".to_string())),
return Err(BinaryReaderError {
message: "Opcode Unimplemented",
offset: -1isize as usize,
})
}
}; };
Ok(o) Ok(o)
} }
@@ -1414,18 +1398,13 @@ where
self.stack.len() as i32 - 1 - idx as i32 self.stack.len() as i32 - 1 - idx as i32
} }
fn apply_op(&mut self, sig: OpSig) -> Result<(), BinaryReaderError> { fn apply_op(&mut self, sig: OpSig) -> Result<(), Error> {
let mut ty_param = None; let mut ty_param = None;
for p in sig.input.iter().rev() { for p in sig.input.iter().rev() {
let stack_ty = match self.stack.pop() { let stack_ty = match self.stack.pop() {
Some(e) => e, Some(e) => e,
None => { None => return Err(Error::Microwasm("Stack is empty".to_string())),
return Err(BinaryReaderError {
message: "Stack is empty",
offset: -1isize as usize,
})
}
}; };
let ty = match p { let ty = match p {
@@ -1447,12 +1426,7 @@ where
let ty = match p { let ty = match p {
SigT::T => match ty_param { SigT::T => match ty_param {
Some(e) => e, Some(e) => e,
None => { None => return Err(Error::Microwasm("Type parameter was not set".to_string())),
return Err(BinaryReaderError {
message: "Type parameter was not set",
offset: -1isize as usize,
})
}
}, },
SigT::Concrete(ty) => ty, SigT::Concrete(ty) => ty,
}; };
@@ -1468,7 +1442,7 @@ where
fn block_params_with_wasm_type( fn block_params_with_wasm_type(
&self, &self,
ty: wasmparser::TypeOrFuncType, ty: wasmparser::TypeOrFuncType,
) -> Result<Vec<SignlessType>, BinaryReaderError> { ) -> Result<Vec<SignlessType>, Error> {
let mut out = self.block_params(); let mut out = self.block_params();
let return_wasm_type = create_returns_from_wasm_type(ty)?; let return_wasm_type = create_returns_from_wasm_type(ty)?;
out.extend(return_wasm_type); out.extend(return_wasm_type);
@@ -1480,9 +1454,9 @@ impl<'a, 'b, M: ModuleContext> Iterator for MicrowasmConv<'a, 'b, M>
where where
for<'any> &'any M::Signature: Into<OpSig>, for<'any> &'any M::Signature: Into<OpSig>,
{ {
type Item = wasmparser::Result<SmallVec<[OperatorFromWasm; 1]>>; type Item = Result<SmallVec<[OperatorFromWasm; 1]>, Error>;
fn next(&mut self) -> Option<wasmparser::Result<SmallVec<[OperatorFromWasm; 1]>>> { fn next(&mut self) -> Option<Result<SmallVec<[OperatorFromWasm; 1]>, Error>> {
macro_rules! to_drop { macro_rules! to_drop {
($block:expr) => {{ ($block:expr) => {{
let block = &$block; let block = &$block;
@@ -1521,7 +1495,7 @@ where
// the removal of uncalled blocks to the backend. // the removal of uncalled blocks to the backend.
return Some(Ok(loop { return Some(Ok(loop {
let op = match self.internal.read() { let op = match self.internal.read() {
Err(e) => return Some(Err(e)), Err(e) => return Some(Err(e.into())),
Ok(o) => o, Ok(o) => o,
}; };
match op { match op {
@@ -1535,10 +1509,9 @@ where
let block = match self.control_frames.last_mut() { let block = match self.control_frames.last_mut() {
Some(e) => e, Some(e) => e,
None => { None => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "unreachable Block else Failed", "unreachable Block else Failed".to_string(),
offset: -1isize as usize, )))
}))
} }
}; };
@@ -1556,10 +1529,9 @@ where
let block = match self.control_frames.pop() { let block = match self.control_frames.pop() {
Some(e) => e, Some(e) => e,
None => { None => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "unreachable Block end Failed", "unreachable Block end Failed".to_string(),
offset: -1isize as usize, )))
}))
} }
}; };
@@ -1597,7 +1569,7 @@ where
} }
let op = match self.internal.read() { let op = match self.internal.read() {
Err(e) => return Some(Err(e)), Err(e) => return Some(Err(e.into())),
Ok(o) => o, Ok(o) => o,
}; };
@@ -1699,22 +1671,12 @@ where
// We don't pop it since we're still in the second block. // We don't pop it since we're still in the second block.
let block = match self.control_frames.last() { let block = match self.control_frames.last() {
Some(e) => e, Some(e) => e,
None => { None => return Some(Err(Error::Microwasm("Block else Failed".to_string()))),
return Some(Err(BinaryReaderError {
message: "Block else Failed",
offset: -1isize as usize,
}))
}
}; };
let to_drop = to_drop!(block); let to_drop = to_drop!(block);
let block = match self.control_frames.last_mut() { let block = match self.control_frames.last_mut() {
Some(e) => e, Some(e) => e,
None => { None => return Some(Err(Error::Microwasm("Block else Failed".to_string()))),
return Some(Err(BinaryReaderError {
message: "Block else Failed",
offset: -1isize as usize,
}))
}
}; };
if let ControlFrameKind::If { has_else, .. } = &mut block.kind { if let ControlFrameKind::If { has_else, .. } = &mut block.kind {
@@ -1738,12 +1700,7 @@ where
WasmOperator::End => { WasmOperator::End => {
let block = match self.control_frames.pop() { let block = match self.control_frames.pop() {
Some(e) => e, Some(e) => e,
None => { None => return Some(Err(Error::Microwasm("Block End Failed".to_string()))),
return Some(Err(BinaryReaderError {
message: "Block End Failed",
offset: -1isize as usize,
}))
}
}; };
let to_drop = to_drop!(block); let to_drop = to_drop!(block);
@@ -1838,7 +1795,7 @@ where
self.unreachable = true; self.unreachable = true;
let (entries, default) = match table.read_table() { let (entries, default) = match table.read_table() {
Ok(o) => o, Ok(o) => o,
Err(e) => return Some(Err(e)), Err(e) => return Some(Err(e.into())),
}; };
let targets = entries let targets = entries
.iter() .iter()
@@ -1893,10 +1850,9 @@ where
let depth = match depth.try_into() { let depth = match depth.try_into() {
Ok(o) => o, Ok(o) => o,
Err(_) => { Err(_) => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "LocalGet - Local out of range", "LocalGet - Local out of range".to_string(),
offset: -1isize as usize, )))
}))
} }
}; };
smallvec![Operator::Pick(depth)] smallvec![Operator::Pick(depth)]
@@ -1907,10 +1863,9 @@ where
let depth = match depth.try_into() { let depth = match depth.try_into() {
Ok(o) => o, Ok(o) => o,
Err(_) => { Err(_) => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "LocalSet - Local out of range", "LocalSet - Local out of range".to_string(),
offset: -1isize as usize, )))
}))
} }
}; };
smallvec![Operator::Swap(depth), Operator::Drop(0..=0)] smallvec![Operator::Swap(depth), Operator::Drop(0..=0)]
@@ -1921,10 +1876,9 @@ where
let depth = match depth.try_into() { let depth = match depth.try_into() {
Ok(o) => o, Ok(o) => o,
Err(_) => { Err(_) => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "LocalTee - Local out of range", "LocalTee - Local out of range".to_string(),
offset: -1isize as usize, )))
}))
} }
}; };
smallvec![ smallvec![
@@ -2044,16 +1998,10 @@ where
smallvec![Operator::Const(Value::F64(value.into()))] smallvec![Operator::Const(Value::F64(value.into()))]
} }
WasmOperator::RefNull => { WasmOperator::RefNull => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm("RefNull unimplemented".to_string())))
message: "RefNull unimplemented",
offset: -1isize as usize,
}))
} }
WasmOperator::RefIsNull => { WasmOperator::RefIsNull => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm("RefIsNull unimplemented".to_string())))
message: "RefIsNull unimplemented",
offset: -1isize as usize,
}))
} }
WasmOperator::I32Eqz => smallvec![Operator::Eqz(Size::_32)], WasmOperator::I32Eqz => smallvec![Operator::Eqz(Size::_32)],
WasmOperator::I32Eq => smallvec![Operator::Eq(I32)], WasmOperator::I32Eq => smallvec![Operator::Eq(I32)],
@@ -2236,93 +2184,75 @@ where
WasmOperator::F32ReinterpretI32 => smallvec![Operator::F32ReinterpretFromI32], WasmOperator::F32ReinterpretI32 => smallvec![Operator::F32ReinterpretFromI32],
WasmOperator::F64ReinterpretI64 => smallvec![Operator::F64ReinterpretFromI64], WasmOperator::F64ReinterpretI64 => smallvec![Operator::F64ReinterpretFromI64],
WasmOperator::I32Extend8S => { WasmOperator::I32Extend8S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I32Extend8S unimplemented", "I32Extend8S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I32Extend16S => { WasmOperator::I32Extend16S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I32Extend16S unimplemented", "I32Extend16S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I64Extend8S => { WasmOperator::I64Extend8S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I64Extend8S unimplemented", "I64Extend8S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I64Extend16S => { WasmOperator::I64Extend16S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I64Extend16S unimplemented", "I64Extend16S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I64Extend32S => { WasmOperator::I64Extend32S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I64Extend32S unimplemented", "I64Extend32S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
// 0xFC operators // 0xFC operators
// Non-trapping Float-to-int Conversions // Non-trapping Float-to-int Conversions
WasmOperator::I32TruncSatF32S => { WasmOperator::I32TruncSatF32S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I32TruncSatF32S unimplemented", "I32TruncSatF32S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I32TruncSatF32U => { WasmOperator::I32TruncSatF32U => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I32TruncSatF32U unimplemented", "I32TruncSatF32U unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I32TruncSatF64S => { WasmOperator::I32TruncSatF64S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I32TruncSatF64S unimplemented", "I32TruncSatF64S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I32TruncSatF64U => { WasmOperator::I32TruncSatF64U => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I32TruncSatF64U unimplemented", "I32TruncSatF64U unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I64TruncSatF32S => { WasmOperator::I64TruncSatF32S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I64TruncSatF32S unimplemented", "I64TruncSatF32S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I64TruncSatF32U => { WasmOperator::I64TruncSatF32U => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I64TruncSatF32U unimplemented", "I64TruncSatF32U unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I64TruncSatF64S => { WasmOperator::I64TruncSatF64S => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I64TruncSatF64S unimplemented", "I64TruncSatF64S unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
WasmOperator::I64TruncSatF64U => { WasmOperator::I64TruncSatF64U => {
return Some(Err(BinaryReaderError { return Some(Err(Error::Microwasm(
message: "I64TruncSatF64U unimplemented", "I64TruncSatF64U unimplemented".to_string(),
offset: -1isize as usize, )))
}))
} }
_other => { _other => return Some(Err(Error::Microwasm("Opcode unimplemented".to_string()))),
return Some(Err(BinaryReaderError {
message: "Opcode unimplemented",
offset: -1isize as usize,
}))
}
})) }))
} }
} }

View File

@@ -23,7 +23,7 @@ wasmtime-wasi = { path = "../../wasi", version = "0.9.0" }
target-lexicon = { version = "0.10.0", default-features = false } target-lexicon = { version = "0.10.0", default-features = false }
anyhow = "1.0.19" anyhow = "1.0.19"
region = "2.0.0" region = "2.0.0"
wasmparser = "0.47.0" wasmparser = "0.51.0"
pyo3 = { version = "0.8.0", features = ["extension-module"] } pyo3 = { version = "0.8.0", features = ["extension-module"] }
[badges] [badges]