diff options
author | Daniel Wirtz <dcode@dcode.io> | 2020-09-29 22:19:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-29 22:19:09 +0200 |
commit | 7d673ce83206349159a68fe683bc7da02dcdaf98 (patch) | |
tree | b6be0e5842b8726406c50e9481531cf456db326f /src/passes/Print.cpp | |
parent | 781da4c206c54e92b46358c00d079ada66cef0df (diff) | |
download | binaryen-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.cpp | 104 |
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"; |