summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-s-parser.cpp
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2022-05-11 11:23:55 -0700
committerGitHub <noreply@github.com>2022-05-11 11:23:55 -0700
commit57bef0d2f9a38a2add940e07fc422fd532574013 (patch)
tree0e93c4aaa08985d631ea87bfbee452825d93c405 /src/wasm/wasm-s-parser.cpp
parentbad3f9e8f058cfdaefb3d7d76a93e842665f8435 (diff)
downloadbinaryen-57bef0d2f9a38a2add940e07fc422fd532574013.tar.gz
binaryen-57bef0d2f9a38a2add940e07fc422fd532574013.tar.bz2
binaryen-57bef0d2f9a38a2add940e07fc422fd532574013.zip
Add ref.cast_nop_static (#4656)
This unsafe experimental instruction is semantically equivalent to ref.cast_static, but V8 will unsafely turn it into a nop. This is meant to help us measure cast overhead more precisely than we can by globally turning all casts into nops.
Diffstat (limited to 'src/wasm/wasm-s-parser.cpp')
-rw-r--r--src/wasm/wasm-s-parser.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp
index 02da4f909..8680ff8cc 100644
--- a/src/wasm/wasm-s-parser.cpp
+++ b/src/wasm/wasm-s-parser.cpp
@@ -2702,7 +2702,13 @@ Expression* SExpressionWasmBuilder::makeRefCast(Element& s) {
Expression* SExpressionWasmBuilder::makeRefCastStatic(Element& s) {
auto heapType = parseHeapType(*s[1]);
auto* ref = parseExpression(*s[2]);
- return Builder(wasm).makeRefCast(ref, heapType);
+ return Builder(wasm).makeRefCast(ref, heapType, RefCast::Safe);
+}
+
+Expression* SExpressionWasmBuilder::makeRefCastNopStatic(Element& s) {
+ auto heapType = parseHeapType(*s[1]);
+ auto* ref = parseExpression(*s[2]);
+ return Builder(wasm).makeRefCast(ref, heapType, RefCast::Unsafe);
}
Expression* SExpressionWasmBuilder::makeBrOn(Element& s, BrOnOp op) {