summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-04-06 20:51:17 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-04-06 20:51:17 -0700
commit7bfdd4fc4e0328ab60796f9fc2bf37cb6b81c3b5 (patch)
tree57fc1e445768ac08c1a5433d8e5cf24e8ef7317f /src
parent53f4c97487e90baa226614e63867add700ed12e5 (diff)
downloadbinaryen-7bfdd4fc4e0328ab60796f9fc2bf37cb6b81c3b5.tar.gz
binaryen-7bfdd4fc4e0328ab60796f9fc2bf37cb6b81c3b5.tar.bz2
binaryen-7bfdd4fc4e0328ab60796f9fc2bf37cb6b81c3b5.zip
move some methods to WasmWalkerBase
Diffstat (limited to 'src')
-rw-r--r--src/wasm-traversal.h52
1 files changed, 25 insertions, 27 deletions
diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h
index d3d606ae4..11d8a5563 100644
--- a/src/wasm-traversal.h
+++ b/src/wasm-traversal.h
@@ -103,8 +103,31 @@ struct WasmVisitor {
template<typename SubType, typename ReturnType = void>
struct WasmWalkerBase : public WasmVisitor<SubType, ReturnType> {
virtual void walk(Expression*& curr) { abort(); }
- virtual void startWalk(Function *func) { abort(); }
- virtual void startWalk(Module *module) { abort(); }
+
+ void startWalk(Function *func) {
+ walk(func->body);
+ }
+
+ void startWalk(Module *module) {
+ // Dispatch statically through the SubType.
+ SubType* self = static_cast<SubType*>(this);
+ for (auto curr : module->functionTypes) {
+ self->visitFunctionType(curr);
+ }
+ for (auto curr : module->imports) {
+ self->visitImport(curr);
+ }
+ for (auto curr : module->exports) {
+ self->visitExport(curr);
+ }
+ for (auto curr : module->functions) {
+ startWalk(curr);
+ self->visitFunction(curr);
+ }
+ self->visitTable(&module->table);
+ self->visitMemory(&module->memory);
+ self->visitModule(module);
+ }
};
template<typename ParentType>
@@ -285,31 +308,6 @@ struct WasmWalker : public WasmReplacerWalker<SubType, ReturnType> {
WasmReplacerWalker<SubType, ReturnType>::walk(curr);
}
-
- void startWalk(Function *func) override {
- walk(func->body);
- }
-
- void startWalk(Module *module) override {
- // Dispatch statically through the SubType.
- SubType* self = static_cast<SubType*>(this);
- for (auto curr : module->functionTypes) {
- self->visitFunctionType(curr);
- }
- for (auto curr : module->imports) {
- self->visitImport(curr);
- }
- for (auto curr : module->exports) {
- self->visitExport(curr);
- }
- for (auto curr : module->functions) {
- startWalk(curr);
- self->visitFunction(curr);
- }
- self->visitTable(&module->table);
- self->visitMemory(&module->memory);
- self->visitModule(module);
- }
};
// Traversal in the order of execution. This is quick and simple, but