diff options
Diffstat (limited to 'src/wasm.h')
-rw-r--r-- | src/wasm.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/wasm.h b/src/wasm.h index dd989602a..07a2f6bf9 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -568,6 +568,12 @@ enum ArrayNewSegOp { NewElem, }; +// TODO: Deduplicate with ArrayNewSegOp? +enum ArrayInitOp { + InitData, + InitElem, +}; + enum BrOnOp { BrOnNull, BrOnNonNull, @@ -722,6 +728,8 @@ public: ArraySetId, ArrayLenId, ArrayCopyId, + ArrayFillId, + ArrayInitId, RefAsId, StringNewId, StringConstId, @@ -1669,6 +1677,32 @@ public: void finalize(); }; +class ArrayFill : public SpecificExpression<Expression::ArrayFillId> { +public: + ArrayFill(MixedArena& allocator) {} + + Expression* ref; + Expression* index; + Expression* value; + Expression* size; + + void finalize(); +}; + +class ArrayInit : public SpecificExpression<Expression::ArrayInitId> { +public: + ArrayInit(MixedArena& allocator) {} + + ArrayInitOp op; + Name segment; + Expression* ref; + Expression* index; + Expression* offset; + Expression* size; + + void finalize(); +}; + class RefAs : public SpecificExpression<Expression::RefAsId> { public: RefAs(MixedArena& allocator) {} |