From d8f2ddd4d680b059c2daded7f57051bf21d77297 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 2 Jun 2021 13:24:22 -0700 Subject: [Wasm GC] Add negated BrOn* operations (#3913) They are basically the flip versions. The only interesting part in the impl is that their returned typed and sent types are different. Spec: https://docs.google.com/document/d/1DklC3qVuOdLHSXB5UXghM_syCh-4cMinQ50ICiXnK3Q/edit --- src/wasm/wasm-stack.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/wasm/wasm-stack.cpp') diff --git a/src/wasm/wasm-stack.cpp b/src/wasm/wasm-stack.cpp index 12c999c0d..70a593bec 100644 --- a/src/wasm/wasm-stack.cpp +++ b/src/wasm/wasm-stack.cpp @@ -1954,18 +1954,33 @@ void BinaryInstWriter::visitBrOn(BrOn* curr) { case BrOnNull: o << int8_t(BinaryConsts::BrOnNull); break; + case BrOnNonNull: + o << int8_t(BinaryConsts::BrOnNonNull); + break; case BrOnCast: o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnCast); break; + case BrOnCastFail: + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnCastFail); + break; case BrOnFunc: o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnFunc); break; + case BrOnNonFunc: + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnNonFunc); + break; case BrOnData: o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnData); break; + case BrOnNonData: + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnNonData); + break; case BrOnI31: o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnI31); break; + case BrOnNonI31: + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnNonI31); + break; default: WASM_UNREACHABLE("invalid br_on_*"); } -- cgit v1.2.3