summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-binary.cpp
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2022-06-29 09:34:26 -0700
committerGitHub <noreply@github.com>2022-06-29 09:34:26 -0700
commit7f75427f7671562874a22981c9dcc4a8e223f48b (patch)
treebd3237d5b43197127e7a17c63fec3b9f5102b5f9 /src/wasm/wasm-binary.cpp
parent9dbe45780d8c78dbb49c208fe4505cd1624a98ac (diff)
downloadbinaryen-7f75427f7671562874a22981c9dcc4a8e223f48b.tar.gz
binaryen-7f75427f7671562874a22981c9dcc4a8e223f48b.tar.bz2
binaryen-7f75427f7671562874a22981c9dcc4a8e223f48b.zip
[Strings] Add string proposal types (#4755)
This starts to implement the Wasm Strings proposal https://github.com/WebAssembly/stringref/blob/main/proposals/stringref/Overview.md This just adds the types.
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r--src/wasm/wasm-binary.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index b74331aed..87ee00c8a 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -1351,6 +1351,18 @@ void WasmBinaryWriter::writeHeapType(HeapType type) {
case HeapType::data:
ret = BinaryConsts::EncodedHeapType::data;
break;
+ case HeapType::string:
+ ret = BinaryConsts::EncodedHeapType::string;
+ break;
+ case HeapType::stringview_wtf8:
+ ret = BinaryConsts::EncodedHeapType::stringview_wtf8_heap;
+ break;
+ case HeapType::stringview_wtf16:
+ ret = BinaryConsts::EncodedHeapType::stringview_wtf16_heap;
+ break;
+ case HeapType::stringview_iter:
+ ret = BinaryConsts::EncodedHeapType::stringview_iter_heap;
+ break;
}
} else {
WASM_UNREACHABLE("TODO: compound GC types");
@@ -1699,6 +1711,18 @@ bool WasmBinaryBuilder::getBasicType(int32_t code, Type& out) {
case BinaryConsts::EncodedType::dataref:
out = Type(HeapType::data, NonNullable);
return true;
+ case BinaryConsts::EncodedType::stringref:
+ out = Type(HeapType::string, Nullable);
+ return true;
+ case BinaryConsts::EncodedType::stringview_wtf8:
+ out = Type(HeapType::stringview_wtf8, Nullable);
+ return true;
+ case BinaryConsts::EncodedType::stringview_wtf16:
+ out = Type(HeapType::stringview_wtf16, Nullable);
+ return true;
+ case BinaryConsts::EncodedType::stringview_iter:
+ out = Type(HeapType::stringview_iter, Nullable);
+ return true;
default:
return false;
}
@@ -1721,6 +1745,18 @@ bool WasmBinaryBuilder::getBasicHeapType(int64_t code, HeapType& out) {
case BinaryConsts::EncodedHeapType::data:
out = HeapType::data;
return true;
+ case BinaryConsts::EncodedHeapType::string:
+ out = HeapType::string;
+ return true;
+ case BinaryConsts::EncodedHeapType::stringview_wtf8_heap:
+ out = HeapType::stringview_wtf8;
+ return true;
+ case BinaryConsts::EncodedHeapType::stringview_wtf16_heap:
+ out = HeapType::stringview_wtf16;
+ return true;
+ case BinaryConsts::EncodedHeapType::stringview_iter_heap:
+ out = HeapType::stringview_iter;
+ return true;
default:
return false;
}