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-interpreter.h | |
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-interpreter.h')
-rw-r--r-- | src/wasm-interpreter.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index 44173d395..1d07af46a 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -1306,15 +1306,20 @@ public: NOTE_ENTER("RefNull"); return Literal::makeNull(curr->type); } - Flow visitRefIsNull(RefIsNull* curr) { - NOTE_ENTER("RefIsNull"); + Flow visitRefIs(RefIs* curr) { + NOTE_ENTER("RefIs"); Flow flow = visit(curr->value); if (flow.breaking()) { return flow; } const auto& value = flow.getSingleValue(); NOTE_EVAL1(value); - return Literal(value.isNull()); + switch (curr->op) { + case RefIsNull: + return Literal(value.isNull()); + default: + WASM_UNREACHABLE("unimplemented ref.is_*"); + } } Flow visitRefFunc(RefFunc* curr) { NOTE_ENTER("RefFunc"); |