diff options
Diffstat (limited to 'src/wasm.h')
-rw-r--r-- | src/wasm.h | 51 |
1 files changed, 32 insertions, 19 deletions
diff --git a/src/wasm.h b/src/wasm.h index 07a2f6bf9..825f35099 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -563,17 +563,6 @@ enum RefAsOp { ExternExternalize, }; -enum ArrayNewSegOp { - NewData, - NewElem, -}; - -// TODO: Deduplicate with ArrayNewSegOp? -enum ArrayInitOp { - InitData, - InitElem, -}; - enum BrOnOp { BrOnNull, BrOnNonNull, @@ -722,14 +711,16 @@ public: StructGetId, StructSetId, ArrayNewId, - ArrayNewSegId, + ArrayNewDataId, + ArrayNewElemId, ArrayNewFixedId, ArrayGetId, ArraySetId, ArrayLenId, ArrayCopyId, ArrayFillId, - ArrayInitId, + ArrayInitDataId, + ArrayInitElemId, RefAsId, StringNewId, StringConstId, @@ -1611,11 +1602,21 @@ public: void finalize(); }; -class ArrayNewSeg : public SpecificExpression<Expression::ArrayNewSegId> { +class ArrayNewData : public SpecificExpression<Expression::ArrayNewDataId> { +public: + ArrayNewData(MixedArena& allocator) {} + + Name segment; + Expression* offset; + Expression* size; + + void finalize(); +}; + +class ArrayNewElem : public SpecificExpression<Expression::ArrayNewElemId> { public: - ArrayNewSeg(MixedArena& allocator) {} + ArrayNewElem(MixedArena& allocator) {} - ArrayNewSegOp op; Name segment; Expression* offset; Expression* size; @@ -1689,11 +1690,23 @@ public: void finalize(); }; -class ArrayInit : public SpecificExpression<Expression::ArrayInitId> { +class ArrayInitData : public SpecificExpression<Expression::ArrayInitDataId> { +public: + ArrayInitData(MixedArena& allocator) {} + + Name segment; + Expression* ref; + Expression* index; + Expression* offset; + Expression* size; + + void finalize(); +}; + +class ArrayInitElem : public SpecificExpression<Expression::ArrayInitElemId> { public: - ArrayInit(MixedArena& allocator) {} + ArrayInitElem(MixedArena& allocator) {} - ArrayInitOp op; Name segment; Expression* ref; Expression* index; |