summaryrefslogtreecommitdiff
path: root/src/wasm-traversal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-traversal.h')
-rw-r--r--src/wasm-traversal.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h
index 73f57a538..f1306721e 100644
--- a/src/wasm-traversal.h
+++ b/src/wasm-traversal.h
@@ -79,6 +79,7 @@ template<typename SubType, typename ReturnType = void> struct Visitor {
ReturnType visitFunction(Function* curr) { return ReturnType(); }
ReturnType visitTable(Table* curr) { return ReturnType(); }
ReturnType visitMemory(Memory* curr) { return ReturnType(); }
+ ReturnType visitEvent(Event* curr) { return ReturnType(); }
ReturnType visitModule(Module* curr) { return ReturnType(); }
ReturnType visit(Expression* curr) {
@@ -223,6 +224,7 @@ struct OverriddenVisitor {
UNIMPLEMENTED(Function);
UNIMPLEMENTED(Table);
UNIMPLEMENTED(Memory);
+ UNIMPLEMENTED(Event);
UNIMPLEMENTED(Module);
#undef UNIMPLEMENTED
@@ -486,6 +488,10 @@ struct Walker : public VisitorType {
setFunction(nullptr);
}
+ void walkEvent(Event* event) {
+ static_cast<SubType*>(this)->visitEvent(event);
+ }
+
void walkFunctionInModule(Function* func, Module* module) {
setModule(module);
setFunction(func);
@@ -545,6 +551,13 @@ struct Walker : public VisitorType {
self->walkFunction(curr.get());
}
}
+ for (auto& curr : module->events) {
+ if (curr->imported()) {
+ self->visitEvent(curr.get());
+ } else {
+ self->walkEvent(curr.get());
+ }
+ }
self->walkTable(&module->table);
self->walkMemory(&module->memory);
}