summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-s-parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-s-parser.cpp')
-rw-r--r--src/wasm/wasm-s-parser.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp
index 016858395..25db9a993 100644
--- a/src/wasm/wasm-s-parser.cpp
+++ b/src/wasm/wasm-s-parser.cpp
@@ -2687,6 +2687,20 @@ Expression* SExpressionWasmBuilder::makeArrayLen(Element& s) {
return Builder(wasm).makeArrayLen(ref);
}
+Expression* SExpressionWasmBuilder::makeArrayCopy(Element& s) {
+ auto destHeapType = parseHeapType(*s[1]);
+ auto srcHeapType = parseHeapType(*s[2]);
+ auto destRef = parseExpression(*s[3]);
+ validateHeapTypeUsingChild(destRef, destHeapType, s);
+ auto destIndex = parseExpression(*s[4]);
+ auto srcRef = parseExpression(*s[5]);
+ validateHeapTypeUsingChild(srcRef, srcHeapType, s);
+ auto srcIndex = parseExpression(*s[6]);
+ auto length = parseExpression(*s[7]);
+ return Builder(wasm).makeArrayCopy(
+ destRef, destIndex, srcRef, srcIndex, length);
+}
+
Expression* SExpressionWasmBuilder::makeRefAs(Element& s, RefAsOp op) {
return Builder(wasm).makeRefAs(op, parseExpression(s[1]));
}