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