summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-stack.cpp
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2022-07-07 15:43:22 -0700
committerGitHub <noreply@github.com>2022-07-07 15:43:22 -0700
commit19a437500a4c30f48355722653a01a8c44ff6bec (patch)
tree408bf64e92d17b38561561f138e1d03243774369 /src/wasm/wasm-stack.cpp
parent9831b36d339b1cea61d5313f7dfa256fc1ee9bcc (diff)
downloadbinaryen-19a437500a4c30f48355722653a01a8c44ff6bec.tar.gz
binaryen-19a437500a4c30f48355722653a01a8c44ff6bec.tar.bz2
binaryen-19a437500a4c30f48355722653a01a8c44ff6bec.zip
[Strings] string.encode (#4776)
Diffstat (limited to 'src/wasm/wasm-stack.cpp')
-rw-r--r--src/wasm/wasm-stack.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/wasm/wasm-stack.cpp b/src/wasm/wasm-stack.cpp
index 9c086bb47..38c8f1661 100644
--- a/src/wasm/wasm-stack.cpp
+++ b/src/wasm/wasm-stack.cpp
@@ -2281,6 +2281,25 @@ void BinaryInstWriter::visitStringMeasure(StringMeasure* curr) {
}
}
+void BinaryInstWriter::visitStringEncode(StringEncode* curr) {
+ o << int8_t(BinaryConsts::GCPrefix);
+ switch (curr->op) {
+ case StringEncodeUTF8:
+ o << U32LEB(BinaryConsts::StringEncodeWTF8)
+ << U32LEB(BinaryConsts::StringPolicy::UTF8);
+ break;
+ case StringEncodeWTF8:
+ o << U32LEB(BinaryConsts::StringEncodeWTF8)
+ << U32LEB(BinaryConsts::StringPolicy::WTF8);
+ break;
+ case StringEncodeWTF16:
+ o << U32LEB(BinaryConsts::StringEncodeWTF16);
+ break;
+ default:
+ WASM_UNREACHABLE("invalid string.new*");
+ }
+}
+
void BinaryInstWriter::emitScopeEnd(Expression* curr) {
assert(!breakStack.empty());
breakStack.pop_back();