Add memory index support in analysis
This commit is contained in:
parent
460363bff1
commit
5622aa661e
@ -1,7 +1,10 @@
|
||||
use std::collections::BTreeSet;
|
||||
|
||||
use wasm_ast::{
|
||||
node::{BinOp, CmpOp, FuncData, LoadAt, MemoryGrow, MemorySize, StoreAt, UnOp},
|
||||
node::{
|
||||
BinOp, CmpOp, FuncData, LoadAt, MemoryCopy, MemoryFill, MemoryGrow, MemorySize, StoreAt,
|
||||
UnOp,
|
||||
},
|
||||
visit::{Driver, Visitor},
|
||||
};
|
||||
|
||||
@ -16,14 +19,14 @@ impl Visitor for Visit {
|
||||
fn visit_load_at(&mut self, v: &LoadAt) {
|
||||
let name = v.load_type().as_name();
|
||||
|
||||
self.memory_set.insert(0);
|
||||
self.memory_set.insert(v.memory());
|
||||
self.local_set.insert(("load", name));
|
||||
}
|
||||
|
||||
fn visit_store_at(&mut self, v: &StoreAt) {
|
||||
let name = v.store_type().as_name();
|
||||
|
||||
self.memory_set.insert(0);
|
||||
self.memory_set.insert(v.memory());
|
||||
self.local_set.insert(("store", name));
|
||||
}
|
||||
|
||||
@ -60,6 +63,15 @@ impl Visitor for Visit {
|
||||
fn visit_memory_grow(&mut self, m: &MemoryGrow) {
|
||||
self.memory_set.insert(m.memory());
|
||||
}
|
||||
|
||||
fn visit_memory_copy(&mut self, m: &MemoryCopy) {
|
||||
self.memory_set.insert(m.destination().memory());
|
||||
self.memory_set.insert(m.source().memory());
|
||||
}
|
||||
|
||||
fn visit_memory_fill(&mut self, m: &MemoryFill) {
|
||||
self.memory_set.insert(m.destination().memory());
|
||||
}
|
||||
}
|
||||
|
||||
pub fn visit(ast: &FuncData) -> (BTreeSet<(&'static str, &'static str)>, BTreeSet<usize>) {
|
||||
|
@ -1,7 +1,10 @@
|
||||
use std::collections::BTreeSet;
|
||||
|
||||
use wasm_ast::{
|
||||
node::{BinOp, CmpOp, FuncData, LoadAt, MemoryGrow, MemorySize, StoreAt, UnOp, Value},
|
||||
node::{
|
||||
BinOp, CmpOp, FuncData, LoadAt, MemoryCopy, MemoryFill, MemoryGrow, MemorySize, StoreAt,
|
||||
UnOp, Value,
|
||||
},
|
||||
visit::{Driver, Visitor},
|
||||
};
|
||||
use wasmparser::ValType;
|
||||
@ -17,14 +20,14 @@ impl Visitor for Visit {
|
||||
fn visit_load_at(&mut self, v: &LoadAt) {
|
||||
let name = v.load_type().as_name();
|
||||
|
||||
self.memory_set.insert(0);
|
||||
self.memory_set.insert(v.memory());
|
||||
self.local_set.insert(("load", name));
|
||||
}
|
||||
|
||||
fn visit_store_at(&mut self, v: &StoreAt) {
|
||||
let name = v.store_type().as_name();
|
||||
|
||||
self.memory_set.insert(0);
|
||||
self.memory_set.insert(v.memory());
|
||||
self.local_set.insert(("store", name));
|
||||
}
|
||||
|
||||
@ -72,6 +75,15 @@ impl Visitor for Visit {
|
||||
fn visit_memory_grow(&mut self, m: &MemoryGrow) {
|
||||
self.memory_set.insert(m.memory());
|
||||
}
|
||||
|
||||
fn visit_memory_copy(&mut self, m: &MemoryCopy) {
|
||||
self.memory_set.insert(m.destination().memory());
|
||||
self.memory_set.insert(m.source().memory());
|
||||
}
|
||||
|
||||
fn visit_memory_fill(&mut self, m: &MemoryFill) {
|
||||
self.memory_set.insert(m.destination().memory());
|
||||
}
|
||||
}
|
||||
|
||||
pub fn visit(ast: &FuncData) -> (BTreeSet<(&'static str, &'static str)>, BTreeSet<usize>) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user