diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-04-06 20:51:17 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-04-06 20:51:17 -0700 |
commit | 7bfdd4fc4e0328ab60796f9fc2bf37cb6b81c3b5 (patch) | |
tree | 57fc1e445768ac08c1a5433d8e5cf24e8ef7317f /src | |
parent | 53f4c97487e90baa226614e63867add700ed12e5 (diff) | |
download | binaryen-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.h | 52 |
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 |