diff options
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r-- | src/wasm/wasm-binary.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index b3f085b36..fc14510e9 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -3046,6 +3046,12 @@ BinaryConsts::ASTNodes WasmBinaryBuilder::readExpression(Expression*& curr) { if (maybeVisitArrayLen(curr, opcode)) { break; } + if (opcode == BinaryConsts::RefIsFunc || + opcode == BinaryConsts::RefIsData || + opcode == BinaryConsts::RefIsI31) { + visitRefIs((curr = allocator.alloc<RefIs>())->cast<RefIs>(), opcode); + break; + } throwError("invalid code after GC prefix: " + std::to_string(opcode)); break; } @@ -5534,6 +5540,15 @@ void WasmBinaryBuilder::visitRefIs(RefIs* curr, uint8_t code) { case BinaryConsts::RefIsNull: curr->op = RefIsNull; break; + case BinaryConsts::RefIsFunc: + curr->op = RefIsFunc; + break; + case BinaryConsts::RefIsData: + curr->op = RefIsData; + break; + case BinaryConsts::RefIsI31: + curr->op = RefIsI31; + break; default: WASM_UNREACHABLE("invalid code for ref.is_*"); } |