summaryrefslogtreecommitdiff
path: root/src/passes/Print.cpp
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2020-09-29 22:19:09 +0200
committerGitHub <noreply@github.com>2020-09-29 22:19:09 +0200
commit7d673ce83206349159a68fe683bc7da02dcdaf98 (patch)
treeb6be0e5842b8726406c50e9481531cf456db326f /src/passes/Print.cpp
parent781da4c206c54e92b46358c00d079ada66cef0df (diff)
downloadbinaryen-7d673ce83206349159a68fe683bc7da02dcdaf98.tar.gz
binaryen-7d673ce83206349159a68fe683bc7da02dcdaf98.tar.bz2
binaryen-7d673ce83206349159a68fe683bc7da02dcdaf98.zip
GC: Add stubs for the remaining instructions (#3174)
NFC, except adding most of the boilerplate for the remaining GC instructions. Each implementation site is marked with a respective `TODO (gc): theInstruction` in between the typical boilerplate code.
Diffstat (limited to 'src/passes/Print.cpp')
-rw-r--r--src/passes/Print.cpp104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index ac115edc3..a8e5b0f9c 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -1478,6 +1478,50 @@ struct PrintExpressionContents
void visitI31Get(I31Get* curr) {
printMedium(o, curr->signed_ ? "i31.get_s" : "i31.get_u");
}
+ void visitRefTest(RefTest* curr) {
+ printMedium(o, "ref.test");
+ WASM_UNREACHABLE("TODO (gc): ref.test");
+ }
+ void visitRefCast(RefCast* curr) {
+ printMedium(o, "ref.cast");
+ WASM_UNREACHABLE("TODO (gc): ref.cast");
+ }
+ void visitBrOnCast(BrOnCast* curr) {
+ printMedium(o, "br_on_cast");
+ WASM_UNREACHABLE("TODO (gc): br_on_cast");
+ }
+ void visitRttCanon(RttCanon* curr) {
+ printMedium(o, "rtt.canon");
+ WASM_UNREACHABLE("TODO (gc): rtt.canon");
+ }
+ void visitRttSub(RttSub* curr) {
+ printMedium(o, "rtt.sub");
+ WASM_UNREACHABLE("TODO (gc): rtt.sub");
+ }
+ void visitStructNew(StructNew* curr) {
+ WASM_UNREACHABLE("TODO (gc): struct.new");
+ }
+ void visitStructGet(StructGet* curr) {
+ WASM_UNREACHABLE("TODO (gc): struct.get");
+ }
+ void visitStructSet(StructSet* curr) {
+ printMedium(o, "struct.set");
+ WASM_UNREACHABLE("TODO (gc): struct.set");
+ }
+ void visitArrayNew(ArrayNew* curr) {
+ WASM_UNREACHABLE("TODO (gc): array.new");
+ }
+ void visitArrayGet(ArrayGet* curr) {
+ WASM_UNREACHABLE("TODO (gc): array.get");
+ }
+ void visitArraySet(ArraySet* curr) {
+ printMedium(o, "array.set");
+ WASM_UNREACHABLE("TODO (gc): array.set");
+ }
+ void visitArrayLen(ArrayLen* curr) {
+ printMedium(o, "array.len");
+ WASM_UNREACHABLE("TODO (gc): array.len");
+ }
};
// Prints an expression in s-expr format, including both the
@@ -2081,6 +2125,66 @@ struct PrintSExpression : public OverriddenVisitor<PrintSExpression> {
printFullLine(curr->i31);
decIndent();
}
+ void visitRefTest(RefTest* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): ref.test");
+ }
+ void visitRefCast(RefCast* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): ref.cast");
+ }
+ void visitBrOnCast(BrOnCast* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): br_on_cast");
+ }
+ void visitRttCanon(RttCanon* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): rtt.canon");
+ }
+ void visitRttSub(RttSub* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): rtt.sub");
+ }
+ void visitStructNew(StructNew* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): struct.new");
+ }
+ void visitStructGet(StructGet* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): struct.get");
+ }
+ void visitStructSet(StructSet* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): struct.set");
+ }
+ void visitArrayNew(ArrayNew* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): array.new");
+ }
+ void visitArrayGet(ArrayGet* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): array.get");
+ }
+ void visitArraySet(ArraySet* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): array.set");
+ }
+ void visitArrayLen(ArrayLen* curr) {
+ o << '(';
+ PrintExpressionContents(currFunction, o).visit(curr);
+ WASM_UNREACHABLE("TODO (gc): array.len");
+ }
// Module-level visitors
void handleSignature(Signature curr, Name* funcName = nullptr) {
o << "(func";