summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wasm/wasm-binary.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 1d0e99415..7b3f741b6 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -1401,9 +1401,15 @@ void WasmBinaryWriter::writeType(Type type) {
o << S32LEB(BinaryConsts::EncodedType::funcref);
return;
}
- assert(Type::isSubType(type, Type(HeapType::ext, Nullable)));
- o << S32LEB(BinaryConsts::EncodedType::externref);
- return;
+ if (Type::isSubType(type, Type(HeapType::ext, Nullable))) {
+ o << S32LEB(BinaryConsts::EncodedType::externref);
+ return;
+ }
+ if (Type::isSubType(type, Type(HeapType::string, Nullable))) {
+ o << S32LEB(BinaryConsts::EncodedType::stringref);
+ return;
+ }
+ WASM_UNREACHABLE("bad type without GC");
}
auto heapType = type.getHeapType();
if (heapType.isBasic() && type.isNullable()) {