summaryrefslogtreecommitdiff
path: root/src/ir/cost.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ir/cost.h')
-rw-r--r--src/ir/cost.h19
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) {