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.h31
1 files changed, 10 insertions, 21 deletions
diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h
index 0c775e872..5bb176756 100644
--- a/src/wasm-traversal.h
+++ b/src/wasm-traversal.h
@@ -43,7 +43,6 @@ struct Visitor {
ReturnType visitBreak(Break* curr) { return ReturnType(); }
ReturnType visitSwitch(Switch* curr) { return ReturnType(); }
ReturnType visitCall(Call* curr) { return ReturnType(); }
- ReturnType visitCallImport(CallImport* curr) { return ReturnType(); }
ReturnType visitCallIndirect(CallIndirect* curr) { return ReturnType(); }
ReturnType visitGetLocal(GetLocal* curr) { return ReturnType(); }
ReturnType visitSetLocal(SetLocal* curr) { return ReturnType(); }
@@ -66,7 +65,6 @@ struct Visitor {
ReturnType visitUnreachable(Unreachable* curr) { return ReturnType(); }
// Module-level visitors
ReturnType visitFunctionType(FunctionType* curr) { return ReturnType(); }
- ReturnType visitImport(Import* curr) { return ReturnType(); }
ReturnType visitExport(Export* curr) { return ReturnType(); }
ReturnType visitGlobal(Global* curr) { return ReturnType(); }
ReturnType visitFunction(Function* curr) { return ReturnType(); }
@@ -88,7 +86,6 @@ struct Visitor {
case Expression::Id::BreakId: DELEGATE(Break);
case Expression::Id::SwitchId: DELEGATE(Switch);
case Expression::Id::CallId: DELEGATE(Call);
- case Expression::Id::CallImportId: DELEGATE(CallImport);
case Expression::Id::CallIndirectId: DELEGATE(CallIndirect);
case Expression::Id::GetLocalId: DELEGATE(GetLocal);
case Expression::Id::SetLocalId: DELEGATE(SetLocal);
@@ -134,7 +131,6 @@ struct OverriddenVisitor {
UNIMPLEMENTED(Break);
UNIMPLEMENTED(Switch);
UNIMPLEMENTED(Call);
- UNIMPLEMENTED(CallImport);
UNIMPLEMENTED(CallIndirect);
UNIMPLEMENTED(GetLocal);
UNIMPLEMENTED(SetLocal);
@@ -156,7 +152,6 @@ struct OverriddenVisitor {
UNIMPLEMENTED(Nop);
UNIMPLEMENTED(Unreachable);
UNIMPLEMENTED(FunctionType);
- UNIMPLEMENTED(Import);
UNIMPLEMENTED(Export);
UNIMPLEMENTED(Global);
UNIMPLEMENTED(Function);
@@ -180,7 +175,6 @@ struct OverriddenVisitor {
case Expression::Id::BreakId: DELEGATE(Break);
case Expression::Id::SwitchId: DELEGATE(Switch);
case Expression::Id::CallId: DELEGATE(Call);
- case Expression::Id::CallImportId: DELEGATE(CallImport);
case Expression::Id::CallIndirectId: DELEGATE(CallIndirect);
case Expression::Id::GetLocalId: DELEGATE(GetLocal);
case Expression::Id::SetLocalId: DELEGATE(SetLocal);
@@ -224,7 +218,6 @@ struct UnifiedExpressionVisitor : public Visitor<SubType, ReturnType> {
ReturnType visitBreak(Break* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitSwitch(Switch* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitCall(Call* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
- ReturnType visitCallImport(CallImport* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitCallIndirect(CallIndirect* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitGetLocal(GetLocal* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitSetLocal(SetLocal* curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
@@ -340,17 +333,22 @@ struct Walker : public VisitorType {
for (auto& curr : module->functionTypes) {
self->visitFunctionType(curr.get());
}
- for (auto& curr : module->imports) {
- self->visitImport(curr.get());
- }
for (auto& curr : module->exports) {
self->visitExport(curr.get());
}
for (auto& curr : module->globals) {
- self->walkGlobal(curr.get());
+ if (curr->imported()) {
+ self->visitGlobal(curr.get());
+ } else {
+ self->walkGlobal(curr.get());
+ }
}
for (auto& curr : module->functions) {
- self->walkFunction(curr.get());
+ if (curr->imported()) {
+ self->visitFunction(curr.get());
+ } else {
+ self->walkFunction(curr.get());
+ }
}
self->walkTable(&module->table);
self->walkMemory(&module->memory);
@@ -405,7 +403,6 @@ struct Walker : public VisitorType {
static void doVisitBreak(SubType* self, Expression** currp) { self->visitBreak((*currp)->cast<Break>()); }
static void doVisitSwitch(SubType* self, Expression** currp) { self->visitSwitch((*currp)->cast<Switch>()); }
static void doVisitCall(SubType* self, Expression** currp) { self->visitCall((*currp)->cast<Call>()); }
- static void doVisitCallImport(SubType* self, Expression** currp) { self->visitCallImport((*currp)->cast<CallImport>()); }
static void doVisitCallIndirect(SubType* self, Expression** currp) { self->visitCallIndirect((*currp)->cast<CallIndirect>()); }
static void doVisitGetLocal(SubType* self, Expression** currp) { self->visitGetLocal((*currp)->cast<GetLocal>()); }
static void doVisitSetLocal(SubType* self, Expression** currp) { self->visitSetLocal((*currp)->cast<SetLocal>()); }
@@ -493,14 +490,6 @@ struct PostWalker : public Walker<SubType, VisitorType> {
}
break;
}
- case Expression::Id::CallImportId: {
- self->pushTask(SubType::doVisitCallImport, currp);
- auto& list = curr->cast<CallImport>()->operands;
- for (int i = int(list.size()) - 1; i >= 0; i--) {
- self->pushTask(SubType::scan, &list[i]);
- }
- break;
- }
case Expression::Id::CallIndirectId: {
self->pushTask(SubType::doVisitCallIndirect, currp);
auto& list = curr->cast<CallIndirect>()->operands;