diff options
author | Alon Zakai <azakai@google.com> | 2021-01-26 21:09:31 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-26 13:09:31 -0800 |
commit | 5e57a13614c56f959faab675d6bcabbd629ec562 (patch) | |
tree | 3c86a2741cffa6da009741506eed4513acc60bf1 /src/wasm/wasm-binary.cpp | |
parent | 89164cdf1403a21a3d79ada0f0cf529d526c9de6 (diff) | |
download | binaryen-5e57a13614c56f959faab675d6bcabbd629ec562.tar.gz binaryen-5e57a13614c56f959faab675d6bcabbd629ec562.tar.bz2 binaryen-5e57a13614c56f959faab675d6bcabbd629ec562.zip |
[GC] RefIsNull => RefIs. (#3516)
This internal refactoring prepares us for ref.is_func/data/i31, by renaming
the node and adding an "op" field. For now that field must always be "Null"
which means it is a ref.is_null.
This adjusts the C API to match the new IR shape. The high-level JS API
is unchanged.
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(); } |