diff options
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r-- | src/wasm/wasm-binary.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index bf71d3a4d..b3f085b36 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -2865,7 +2865,7 @@ BinaryConsts::ASTNodes WasmBinaryBuilder::readExpression(Expression*& curr) { visitRefNull((curr = allocator.alloc<RefNull>())->cast<RefNull>()); break; case BinaryConsts::RefIsNull: - visitRefIsNull((curr = allocator.alloc<RefIsNull>())->cast<RefIsNull>()); + visitRefIs((curr = allocator.alloc<RefIs>())->cast<RefIs>(), code); break; case BinaryConsts::RefFunc: visitRefFunc((curr = allocator.alloc<RefFunc>())->cast<RefFunc>()); @@ -5528,8 +5528,15 @@ void WasmBinaryBuilder::visitRefNull(RefNull* curr) { curr->finalize(getHeapType()); } -void WasmBinaryBuilder::visitRefIsNull(RefIsNull* curr) { - BYN_TRACE("zz node: RefIsNull\n"); +void WasmBinaryBuilder::visitRefIs(RefIs* curr, uint8_t code) { + BYN_TRACE("zz node: RefIs\n"); + switch (code) { + case BinaryConsts::RefIsNull: + curr->op = RefIsNull; + break; + default: + WASM_UNREACHABLE("invalid code for ref.is_*"); + } curr->value = popNonVoidExpression(); curr->finalize(); } |