diff options
Diffstat (limited to 'src/ir/cost.h')
-rw-r--r-- | src/ir/cost.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/ir/cost.h b/src/ir/cost.h index 0c5a13819..b71e1ea0e 100644 --- a/src/ir/cost.h +++ b/src/ir/cost.h @@ -586,12 +586,21 @@ struct CostAnalyzer : public OverriddenVisitor<CostAnalyzer, Index> { return 1 + nullCheckCost(curr->ref) + visit(curr->ref); } Index visitStructSet(StructSet* curr) { - return 1 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->value); + return 2 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->value); + } + Index visitArrayNew(ArrayNew* curr) { + return 4 + visit(curr->rtt) + visit(curr->size) + visit(curr->init); + } + Index visitArrayGet(ArrayGet* curr) { + return 1 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->index); + } + Index visitArraySet(ArraySet* curr) { + return 2 + nullCheckCost(curr->ref) + visit(curr->ref) + + visit(curr->index) + visit(curr->value); + } + Index visitArrayLen(ArrayLen* curr) { + return 1 + nullCheckCost(curr->ref) + visit(curr->ref); } - Index visitArrayNew(ArrayNew* curr) { WASM_UNREACHABLE("TODO: GC"); } - Index visitArrayGet(ArrayGet* curr) { WASM_UNREACHABLE("TODO: GC"); } - Index visitArraySet(ArraySet* curr) { WASM_UNREACHABLE("TODO: GC"); } - Index visitArrayLen(ArrayLen* curr) { WASM_UNREACHABLE("TODO: GC"); } private: Index nullCheckCost(Expression* ref) { |