summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-stack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-stack.cpp')
-rw-r--r--src/wasm/wasm-stack.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/wasm/wasm-stack.cpp b/src/wasm/wasm-stack.cpp
index 197581e33..0ccca0e23 100644
--- a/src/wasm/wasm-stack.cpp
+++ b/src/wasm/wasm-stack.cpp
@@ -1990,9 +1990,25 @@ void BinaryInstWriter::visitRefCast(RefCast* curr) {
o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::RefCast);
}
-void BinaryInstWriter::visitBrOnCast(BrOnCast* curr) {
- o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnCast)
- << U32LEB(getBreakIndex(curr->name));
+void BinaryInstWriter::visitBrOn(BrOn* curr) {
+ o << int8_t(BinaryConsts::GCPrefix);
+ switch (curr->op) {
+ case BrOnCast:
+ o << U32LEB(BinaryConsts::BrOnCast);
+ break;
+ case BrOnFunc:
+ o << U32LEB(BinaryConsts::BrOnFunc);
+ break;
+ case BrOnData:
+ o << U32LEB(BinaryConsts::BrOnData);
+ break;
+ case BrOnI31:
+ o << U32LEB(BinaryConsts::BrOnI31);
+ break;
+ default:
+ WASM_UNREACHABLE("invalid br_on_*");
+ }
+ o << U32LEB(getBreakIndex(curr->name));
}
void BinaryInstWriter::visitRttCanon(RttCanon* curr) {