diff options
Diffstat (limited to 'src/passes')
-rw-r--r-- | src/passes/DeadCodeElimination.cpp | 12 | ||||
-rw-r--r-- | src/passes/MemoryPacking.cpp | 5 | ||||
-rw-r--r-- | src/passes/Print.cpp | 37 | ||||
-rw-r--r-- | src/passes/RemoveUnusedModuleElements.cpp | 7 | ||||
-rw-r--r-- | src/passes/Vacuum.cpp | 3 |
5 files changed, 29 insertions, 35 deletions
diff --git a/src/passes/DeadCodeElimination.cpp b/src/passes/DeadCodeElimination.cpp index 9e2e194cb..4215de3f8 100644 --- a/src/passes/DeadCodeElimination.cpp +++ b/src/passes/DeadCodeElimination.cpp @@ -315,8 +315,10 @@ struct DeadCodeElimination DELEGATE(Drop); case Expression::Id::ReturnId: DELEGATE(Return); - case Expression::Id::HostId: - DELEGATE(Host); + case Expression::Id::MemorySizeId: + DELEGATE(MemorySize); + case Expression::Id::MemoryGrowId: + DELEGATE(MemoryGrow); case Expression::Id::NopId: DELEGATE(Nop); case Expression::Id::UnreachableId: @@ -519,7 +521,11 @@ struct DeadCodeElimination blockifyReachableOperands({curr->value}, curr->type); } - void visitHost(Host* curr) { handleCall(curr); } + void visitMemorySize(MemorySize* curr) {} + + void visitMemoryGrow(MemoryGrow* curr) { + blockifyReachableOperands({curr->delta}, curr->type); + } void visitFunction(Function* curr) { assert(reachableBreaks.size() == 0); } }; diff --git a/src/passes/MemoryPacking.cpp b/src/passes/MemoryPacking.cpp index 1a1e87502..eac7fb7f0 100644 --- a/src/passes/MemoryPacking.cpp +++ b/src/passes/MemoryPacking.cpp @@ -77,9 +77,8 @@ const size_t DATA_DROP_SIZE = 3; namespace { Expression* makeShiftedMemorySize(Builder& builder) { - return builder.makeBinary(ShlInt32, - builder.makeHost(MemorySize, Name(), {}), - builder.makeConst(int32_t(16))); + return builder.makeBinary( + ShlInt32, builder.makeMemorySize(), builder.makeConst(int32_t(16))); } } // anonymous namespace diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp index 15ab97098..916615e07 100644 --- a/src/passes/Print.cpp +++ b/src/passes/Print.cpp @@ -1430,16 +1430,8 @@ struct PrintExpressionContents } void visitDrop(Drop* curr) { printMedium(o, "drop"); } void visitReturn(Return* curr) { printMedium(o, "return"); } - void visitHost(Host* curr) { - switch (curr->op) { - case MemorySize: - printMedium(o, "memory.size"); - break; - case MemoryGrow: - printMedium(o, "memory.grow"); - break; - } - } + void visitMemorySize(MemorySize* curr) { printMedium(o, "memory.size"); } + void visitMemoryGrow(MemoryGrow* curr) { printMedium(o, "memory.grow"); } void visitRefNull(RefNull* curr) { printMedium(o, "ref.null "); o << curr->type.getHeapType(); @@ -1577,7 +1569,9 @@ struct PrintSExpression : public OverriddenVisitor<PrintSExpression> { o << ')'; } void printFullLine(Expression* expression) { - !minify && doIndent(o, indent); + if (!minify) { + doIndent(o, indent); + } if (full) { o << "[" << expression->type << "] "; } @@ -1945,20 +1939,17 @@ struct PrintSExpression : public OverriddenVisitor<PrintSExpression> { printFullLine(curr->value); decIndent(); } - void visitHost(Host* curr) { + void visitMemorySize(MemorySize* curr) { o << '('; PrintExpressionContents(currFunction, o).visit(curr); - switch (curr->op) { - case MemoryGrow: { - incIndent(); - printFullLine(curr->operands[0]); - decIndent(); - break; - } - case MemorySize: { - o << ')'; - } - } + o << ')'; + } + void visitMemoryGrow(MemoryGrow* curr) { + o << '('; + PrintExpressionContents(currFunction, o).visit(curr); + incIndent(); + printFullLine(curr->delta); + decIndent(); } void visitRefNull(RefNull* curr) { o << '('; diff --git a/src/passes/RemoveUnusedModuleElements.cpp b/src/passes/RemoveUnusedModuleElements.cpp index 21cbc5e5b..3795022c2 100644 --- a/src/passes/RemoveUnusedModuleElements.cpp +++ b/src/passes/RemoveUnusedModuleElements.cpp @@ -111,11 +111,8 @@ struct ReachabilityAnalyzer : public PostWalker<ReachabilityAnalyzer> { void visitDataDrop(DataDrop* curr) { usesMemory = true; } void visitMemoryCopy(MemoryCopy* curr) { usesMemory = true; } void visitMemoryFill(MemoryFill* curr) { usesMemory = true; } - void visitHost(Host* curr) { - if (curr->op == MemorySize || curr->op == MemoryGrow) { - usesMemory = true; - } - } + void visitMemorySize(MemorySize* curr) { usesMemory = true; } + void visitMemoryGrow(MemoryGrow* curr) { usesMemory = true; } void visitRefFunc(RefFunc* curr) { if (reachable.count( ModuleElement(ModuleElementKind::Function, curr->func)) == 0) { diff --git a/src/passes/Vacuum.cpp b/src/passes/Vacuum.cpp index 94537619c..618a198e5 100644 --- a/src/passes/Vacuum.cpp +++ b/src/passes/Vacuum.cpp @@ -92,7 +92,8 @@ struct Vacuum : public WalkerPass<ExpressionStackWalker<Vacuum>> { case Expression::Id::StoreId: case Expression::Id::ReturnId: case Expression::Id::GlobalSetId: - case Expression::Id::HostId: + case Expression::Id::MemorySizeId: + case Expression::Id::MemoryGrowId: case Expression::Id::UnreachableId: return curr; // always needed |