summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock36
-rw-r--r--crates/parser/src/visit.rs27
2 files changed, 23 insertions, 40 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 539cb8c..bc521f0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -161,18 +161,18 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.21"
+version = "4.5.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f"
+checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
-version = "4.5.21"
+version = "4.5.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec"
+checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
dependencies = [
"anstyle",
"clap_lex",
@@ -373,9 +373,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
[[package]]
name = "indexmap"
-version = "2.6.0"
+version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
+checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
dependencies = [
"equivalent",
"hashbrown",
@@ -415,9 +415,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "libc"
-version = "0.2.166"
+version = "0.2.167"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36"
+checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
[[package]]
name = "libm"
@@ -736,9 +736,9 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
[[package]]
name = "syn"
-version = "2.0.89"
+version = "2.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e"
+checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
dependencies = [
"proc-macro2",
"quote",
@@ -878,9 +878,9 @@ dependencies = [
[[package]]
name = "wasm-encoder"
-version = "0.221.0"
+version = "0.221.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de35b6c3ef1f53ac7a31b5e69bc00f1542ea337e7e7162dc34c68b537ff82690"
+checksum = "c17a3bd88f2155da63a1f2fcb8a56377a24f0b6dfed12733bb5f544e86f690c5"
dependencies = [
"leb128",
"wasmparser",
@@ -895,9 +895,9 @@ dependencies = [
[[package]]
name = "wasmparser"
-version = "0.221.0"
+version = "0.221.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8659e755615170cfe20da468865c989da78c5da16d8652e69a75acda02406a92"
+checksum = "9845c470a2e10b61dd42c385839cdd6496363ed63b5c9e420b5488b77bd22083"
dependencies = [
"bitflags",
"indexmap",
@@ -906,9 +906,9 @@ dependencies = [
[[package]]
name = "wast"
-version = "221.0.0"
+version = "221.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d8eb1933d493dd07484a255c3f52236123333f5befaa3be36182a50d393ec54"
+checksum = "fcc4470b9de917ba199157d1f0ae104f2ae362be728c43e68c571c7715bd629e"
dependencies = [
"bumpalo",
"leb128",
@@ -919,9 +919,9 @@ dependencies = [
[[package]]
name = "wat"
-version = "1.221.0"
+version = "1.221.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c813fd4e5b2b97242830b56e7b7dc5479bc17aaa8730109be35e61909af83993"
+checksum = "6b1f3c6d82af47286494c6caea1d332037f5cbeeac82bbf5ef59cb8c201c466e"
dependencies = [
"wast",
]
diff --git a/crates/parser/src/visit.rs b/crates/parser/src/visit.rs
index a94b3a1..098caf9 100644
--- a/crates/parser/src/visit.rs
+++ b/crates/parser/src/visit.rs
@@ -20,16 +20,6 @@ macro_rules! validate_then_visit {
)*};
}
-macro_rules! validate_then_visit_simd {
- ($( @$proposal:ident $op:ident $({ $($arg:ident: $argty:ty),* })? => $visit:ident ($($ann:tt)*))*) => {$(
- fn $visit(&mut self $($(,$arg: $argty)*)?) -> Self::Output {
- self.1.$visit($($($arg.clone()),*)?);
- self.1.validator_visitor(self.0).simd_visitor().expect("simd_visitor is supported by the validator").$visit($($($arg),*)?)?;
- Ok(())
- }
- )*};
-}
-
impl<'a, R: WasmModuleResources> VisitOperator<'a> for ValidateThenVisit<'_, R> {
type Output = Result<()>;
wasmparser::for_each_visit_operator!(validate_then_visit);
@@ -40,7 +30,7 @@ impl<'a, R: WasmModuleResources> VisitOperator<'a> for ValidateThenVisit<'_, R>
}
impl<R: WasmModuleResources> VisitSimdOperator<'_> for ValidateThenVisit<'_, R> {
- wasmparser::for_each_visit_simd_operator!(validate_then_visit_simd);
+ wasmparser::for_each_visit_simd_operator!(validate_then_visit);
}
pub(crate) fn process_operators_and_validate<R: WasmModuleResources>(
@@ -137,8 +127,8 @@ impl<R: WasmModuleResources> FunctionBuilder<R> {
pub(crate) fn validator_visitor(
&mut self,
offset: usize,
- ) -> impl VisitOperator<'_, Output = Result<(), wasmparser::BinaryReaderError>> {
- self.validator.visitor(offset)
+ ) -> impl VisitOperator<'_, Output = Result<(), wasmparser::BinaryReaderError>> + VisitSimdOperator<'_> {
+ self.validator.simd_visitor(offset)
}
pub(crate) fn validator_finish(&mut self, offset: usize) -> Result<(), wasmparser::BinaryReaderError> {
@@ -173,8 +163,8 @@ macro_rules! impl_visit_operator {
(@@sign_extension $($rest:tt)* ) => {};
(@@saturating_float_to_int $($rest:tt)* ) => {};
(@@bulk_memory $($rest:tt)* ) => {};
- // (@@tail_call $($rest:tt)* ) => {};
(@@simd $($rest:tt)* ) => {};
+
(@@$proposal:ident $op:ident $({ $($arg:ident: $argty:ty),* })? => $visit:ident ($($ann:tt)*)) => {
#[cold]
fn $visit(&mut self $($(,$arg: $argty)*)?) {
@@ -212,14 +202,6 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild
visit_memory_init(MemoryInit, u32, u32), visit_memory_copy(MemoryCopy, u32, u32), visit_table_init(TableInit, u32, u32), visit_memory_fill(MemoryFill, u32), visit_data_drop(DataDrop, u32), visit_elem_drop(ElemDrop, u32)
}
- // fn visit_return_call(&mut self, function_index: u32) -> Self::Output {
- // self.instructions.push(Instruction::ReturnCall(function_index));
- // }
-
- // fn visit_return_call_indirect(&mut self, type_index: u32, table_index: u32) -> Self::Output {
- // self.instructions.push(Instruction::ReturnCallIndirect(type_index, table_index));
- // }
-
fn visit_global_set(&mut self, global_index: u32) -> Self::Output {
match self.validator.get_operand_type(0) {
Some(Some(t)) => self.instructions.push(match t {
@@ -247,6 +229,7 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild
_ => self.visit_unreachable(),
}
}
+
fn visit_select(&mut self) -> Self::Output {
match self.validator.get_operand_type(1) {
Some(Some(t)) => self.visit_typed_select(t),