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.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/wasm/wasm-stack.cpp b/src/wasm/wasm-stack.cpp
index c4b9598c7..db40a5980 100644
--- a/src/wasm/wasm-stack.cpp
+++ b/src/wasm/wasm-stack.cpp
@@ -2033,10 +2033,16 @@ void BinaryInstWriter::visitRefCast(RefCast* curr) {
o << int8_t(BinaryConsts::GCPrefix);
if (curr->safety == RefCast::Unsafe) {
o << U32LEB(BinaryConsts::RefCastNop);
+ parent.writeIndexedHeapType(curr->intendedType);
} else {
- o << U32LEB(BinaryConsts::RefCastNull);
+ // Emulate legacy polymorphic behavior for now.
+ if (curr->ref->type.isNullable()) {
+ o << U32LEB(BinaryConsts::RefCastNull);
+ } else {
+ o << U32LEB(BinaryConsts::RefCast);
+ }
+ parent.writeHeapType(curr->intendedType);
}
- parent.writeHeapType(curr->intendedType);
}
void BinaryInstWriter::visitBrOn(BrOn* curr) {