diff options
Diffstat (limited to 'src/ir')
-rw-r--r-- | src/ir/ReFinalize.cpp | 1 | ||||
-rw-r--r-- | src/ir/cost.h | 3 | ||||
-rw-r--r-- | src/ir/effects.h | 4 | ||||
-rw-r--r-- | src/ir/possible-contents.cpp | 1 |
4 files changed, 9 insertions, 0 deletions
diff --git a/src/ir/ReFinalize.cpp b/src/ir/ReFinalize.cpp index b0dea7627..bfdcfe7a6 100644 --- a/src/ir/ReFinalize.cpp +++ b/src/ir/ReFinalize.cpp @@ -124,6 +124,7 @@ void ReFinalize::visitTableGet(TableGet* curr) { curr->finalize(); } void ReFinalize::visitTableSet(TableSet* curr) { curr->finalize(); } void ReFinalize::visitTableSize(TableSize* curr) { curr->finalize(); } void ReFinalize::visitTableGrow(TableGrow* curr) { curr->finalize(); } +void ReFinalize::visitTableFill(TableFill* curr) { curr->finalize(); } void ReFinalize::visitTry(Try* curr) { curr->finalize(); } void ReFinalize::visitThrow(Throw* curr) { curr->finalize(); } void ReFinalize::visitRethrow(Rethrow* curr) { curr->finalize(); } diff --git a/src/ir/cost.h b/src/ir/cost.h index e7287de77..73d027788 100644 --- a/src/ir/cost.h +++ b/src/ir/cost.h @@ -574,6 +574,9 @@ struct CostAnalyzer : public OverriddenVisitor<CostAnalyzer, CostType> { CostType visitTableGrow(TableGrow* curr) { return Unacceptable + visit(curr->value) + visit(curr->delta); } + CostType visitTableFill(TableFill* curr) { + return 6 + visit(curr->dest) + visit(curr->value) + visit(curr->size); + } CostType visitTry(Try* curr) { // We assume no exception will be thrown in most cases return visit(curr->body); diff --git a/src/ir/effects.h b/src/ir/effects.h index 171a17803..9bdf08c74 100644 --- a/src/ir/effects.h +++ b/src/ir/effects.h @@ -692,6 +692,10 @@ private: parent.readsTable = true; parent.writesTable = true; } + void visitTableFill(TableFill* curr) { + parent.writesTable = true; + parent.implicitTrap = true; + } void visitTry(Try* curr) { if (curr->delegateTarget.is()) { parent.delegateTargets.insert(curr->delegateTarget); diff --git a/src/ir/possible-contents.cpp b/src/ir/possible-contents.cpp index b23d8220a..27ba8c759 100644 --- a/src/ir/possible-contents.cpp +++ b/src/ir/possible-contents.cpp @@ -661,6 +661,7 @@ struct InfoCollector void visitTableSet(TableSet* curr) {} void visitTableSize(TableSize* curr) { addRoot(curr); } void visitTableGrow(TableGrow* curr) { addRoot(curr); } + void visitTableFill(TableFill* curr) { addRoot(curr); } void visitNop(Nop* curr) {} void visitUnreachable(Unreachable* curr) {} |