diff options
Diffstat (limited to 'src/wasm/wasm-s-parser.cpp')
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 14 |
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])); } |