diff options
author | Alon Zakai <azakai@google.com> | 2021-09-10 09:39:10 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-10 09:39:10 -0700 |
commit | 3ed93d00b8f7c0d1f4ab2086b386836f2914dc0e (patch) | |
tree | 0511118fad9439fe6995ff0fe1e67b3231b67c14 /src/ir/cost.h | |
parent | 23e452a5c89cc520a1d08bb465785bcb79a43baa (diff) | |
download | binaryen-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.h | 7 |
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); } |