diff options
Diffstat (limited to 'src/wasm-traversal.h')
-rw-r--r-- | src/wasm-traversal.h | 31 |
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; |