summaryrefslogtreecommitdiff
path: root/src/ir/cost.h
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2021-09-10 09:39:10 -0700
committerGitHub <noreply@github.com>2021-09-10 09:39:10 -0700
commit3ed93d00b8f7c0d1f4ab2086b386836f2914dc0e (patch)
tree0511118fad9439fe6995ff0fe1e67b3231b67c14 /src/ir/cost.h
parent23e452a5c89cc520a1d08bb465785bcb79a43baa (diff)
downloadbinaryen-3ed93d00b8f7c0d1f4ab2086b386836f2914dc0e.tar.gz
binaryen-3ed93d00b8f7c0d1f4ab2086b386836f2914dc0e.tar.bz2
binaryen-3ed93d00b8f7c0d1f4ab2086b386836f2914dc0e.zip
[Wasm GC] ArrayInit support (#4138)
array.init is like array.new_with_rtt except that it takes as arguments the values to initialize the array with (as opposed to a size and an optional initial value). Spec: https://docs.google.com/document/d/1afthjsL_B9UaMqCA5ekgVmOm75BVFu6duHNsN9-gnXw/edit#
Diffstat (limited to 'src/ir/cost.h')
-rw-r--r--src/ir/cost.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ir/cost.h b/src/ir/cost.h
index 63424c8b3..e3e6aebf3 100644
--- a/src/ir/cost.h
+++ b/src/ir/cost.h
@@ -606,6 +606,13 @@ struct CostAnalyzer : public OverriddenVisitor<CostAnalyzer, CostType> {
CostType visitArrayNew(ArrayNew* curr) {
return 4 + visit(curr->rtt) + visit(curr->size) + maybeVisit(curr->init);
}
+ CostType visitArrayInit(ArrayInit* curr) {
+ CostType ret = 4 + visit(curr->rtt);
+ for (auto* child : curr->values) {
+ ret += visit(child);
+ }
+ return ret;
+ }
CostType visitArrayGet(ArrayGet* curr) {
return 1 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->index);
}