diff options
author | Alon Zakai <azakai@google.com> | 2023-05-23 10:38:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-23 10:38:00 -0700 |
commit | e8ac658a5db2fadc93c3d317d465eed253e191ed (patch) | |
tree | 29a02aa1bea161be7c25713a5ae435f708b42b87 /src/wasm/wasm-stack.cpp | |
parent | 5beebc6b249c6393e0dbf69f0ec2374eca5d387b (diff) | |
download | binaryen-e8ac658a5db2fadc93c3d317d465eed253e191ed.tar.gz binaryen-e8ac658a5db2fadc93c3d317d465eed253e191ed.tar.bz2 binaryen-e8ac658a5db2fadc93c3d317d465eed253e191ed.zip |
Revert "Update br_on_cast binary and text format (#5734)" (#5740)
This reverts commit b7b1d0df29df14634d2c680d1d2c351b624b4fbb.
See comment at the end of #5734: It turns out that dropping the old opcodes causes
problems for current users, so let's revert this for now, and later we can figure out
how best to do the update.
Diffstat (limited to 'src/wasm/wasm-stack.cpp')
-rw-r--r-- | src/wasm/wasm-stack.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/wasm/wasm-stack.cpp b/src/wasm/wasm-stack.cpp index ee457da69..7a4dd3983 100644 --- a/src/wasm/wasm-stack.cpp +++ b/src/wasm/wasm-stack.cpp @@ -2045,22 +2045,25 @@ void BinaryInstWriter::visitBrOn(BrOn* curr) { o << U32LEB(getBreakIndex(curr->name)); return; case BrOnCast: - case BrOnCastFail: { o << int8_t(BinaryConsts::GCPrefix); - if (curr->op == BrOnCast) { + if (curr->castType.isNullable()) { + o << U32LEB(BinaryConsts::BrOnCastNull); + } else { o << U32LEB(BinaryConsts::BrOnCast); + } + o << U32LEB(getBreakIndex(curr->name)); + parent.writeHeapType(curr->castType.getHeapType()); + return; + case BrOnCastFail: + o << int8_t(BinaryConsts::GCPrefix); + if (curr->castType.isNullable()) { + o << U32LEB(BinaryConsts::BrOnCastFailNull); } else { o << U32LEB(BinaryConsts::BrOnCastFail); } - assert(curr->ref->type.isRef()); - uint8_t flags = (curr->ref->type.isNullable() ? 1 : 0) | - (curr->castType.isNullable() ? 2 : 0); - o << flags; o << U32LEB(getBreakIndex(curr->name)); - parent.writeHeapType(curr->ref->type.getHeapType()); parent.writeHeapType(curr->castType.getHeapType()); return; - } } WASM_UNREACHABLE("invalid br_on_*"); } |