diff options
author | Alon Zakai <azakai@google.com> | 2020-11-12 10:15:52 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-12 10:15:52 -0800 |
commit | 1eb48a4f506a31e79be41f3bec091f799c6f5201 (patch) | |
tree | 3b405be9291131f484e0616b8f857601a11c37d0 /src/ir/utils.h | |
parent | d41782f9cac8cb059ccc03f69e10d44849e3d10f (diff) | |
download | binaryen-1eb48a4f506a31e79be41f3bec091f799c6f5201.tar.gz binaryen-1eb48a4f506a31e79be41f3bec091f799c6f5201.tar.bz2 binaryen-1eb48a4f506a31e79be41f3bec091f799c6f5201.zip |
Remove boilerplate in utils.h (#3340)
Also avoid needing to #undef DELEGATE all the time.
Diffstat (limited to 'src/ir/utils.h')
-rw-r--r-- | src/ir/utils.h | 136 |
1 files changed, 8 insertions, 128 deletions
diff --git a/src/ir/utils.h b/src/ir/utils.h index cd50aa1cc..0136fd11c 100644 --- a/src/ir/utils.h +++ b/src/ir/utils.h @@ -111,70 +111,10 @@ struct ReFinalize std::map<Name, Type> breakValues; - void visitBlock(Block* curr); - void visitIf(If* curr); - void visitLoop(Loop* curr); - void visitBreak(Break* curr); - void visitSwitch(Switch* curr); - void visitCall(Call* curr); - void visitCallIndirect(CallIndirect* curr); - void visitLocalGet(LocalGet* curr); - void visitLocalSet(LocalSet* curr); - void visitGlobalGet(GlobalGet* curr); - void visitGlobalSet(GlobalSet* curr); - void visitLoad(Load* curr); - void visitStore(Store* curr); - void visitAtomicRMW(AtomicRMW* curr); - void visitAtomicCmpxchg(AtomicCmpxchg* curr); - void visitAtomicWait(AtomicWait* curr); - void visitAtomicNotify(AtomicNotify* curr); - void visitAtomicFence(AtomicFence* curr); - void visitSIMDExtract(SIMDExtract* curr); - void visitSIMDReplace(SIMDReplace* curr); - void visitSIMDShuffle(SIMDShuffle* curr); - void visitSIMDTernary(SIMDTernary* curr); - void visitSIMDShift(SIMDShift* curr); - void visitSIMDLoad(SIMDLoad* curr); - void visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr); - void visitMemoryInit(MemoryInit* curr); - void visitDataDrop(DataDrop* curr); - void visitMemoryCopy(MemoryCopy* curr); - void visitMemoryFill(MemoryFill* curr); - void visitConst(Const* curr); - void visitUnary(Unary* curr); - void visitBinary(Binary* curr); - void visitSelect(Select* curr); - void visitDrop(Drop* curr); - void visitReturn(Return* curr); - void visitMemorySize(MemorySize* curr); - void visitMemoryGrow(MemoryGrow* curr); - void visitRefNull(RefNull* curr); - void visitRefIsNull(RefIsNull* curr); - void visitRefFunc(RefFunc* curr); - void visitRefEq(RefEq* curr); - void visitTry(Try* curr); - void visitThrow(Throw* curr); - void visitRethrow(Rethrow* curr); - void visitBrOnExn(BrOnExn* curr); - void visitNop(Nop* curr); - void visitUnreachable(Unreachable* curr); - void visitPop(Pop* curr); - void visitTupleMake(TupleMake* curr); - void visitTupleExtract(TupleExtract* curr); - void visitI31New(I31New* curr); - void visitI31Get(I31Get* curr); - void visitRefTest(RefTest* curr); - void visitRefCast(RefCast* curr); - void visitBrOnCast(BrOnCast* curr); - void visitRttCanon(RttCanon* curr); - void visitRttSub(RttSub* curr); - void visitStructNew(StructNew* curr); - void visitStructGet(StructGet* curr); - void visitStructSet(StructSet* curr); - void visitArrayNew(ArrayNew* curr); - void visitArrayGet(ArrayGet* curr); - void visitArraySet(ArraySet* curr); - void visitArrayLen(ArrayLen* curr); +#define DELEGATE(CLASS_TO_VISIT) \ + void visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr); + +#include "wasm-delegations.h" void visitFunction(Function* curr); @@ -196,70 +136,10 @@ private: // Re-finalize a single node. This is slow, if you want to refinalize // an entire ast, use ReFinalize struct ReFinalizeNode : public OverriddenVisitor<ReFinalizeNode> { - void visitBlock(Block* curr) { curr->finalize(); } - void visitIf(If* curr) { curr->finalize(); } - void visitLoop(Loop* curr) { curr->finalize(); } - void visitBreak(Break* curr) { curr->finalize(); } - void visitSwitch(Switch* curr) { curr->finalize(); } - void visitCall(Call* curr) { curr->finalize(); } - void visitCallIndirect(CallIndirect* curr) { curr->finalize(); } - void visitLocalGet(LocalGet* curr) { curr->finalize(); } - void visitLocalSet(LocalSet* curr) { curr->finalize(); } - void visitGlobalGet(GlobalGet* curr) { curr->finalize(); } - void visitGlobalSet(GlobalSet* curr) { curr->finalize(); } - void visitLoad(Load* curr) { curr->finalize(); } - void visitStore(Store* curr) { curr->finalize(); } - void visitAtomicRMW(AtomicRMW* curr) { curr->finalize(); } - void visitAtomicCmpxchg(AtomicCmpxchg* curr) { curr->finalize(); } - void visitAtomicWait(AtomicWait* curr) { curr->finalize(); } - void visitAtomicNotify(AtomicNotify* curr) { curr->finalize(); } - void visitAtomicFence(AtomicFence* curr) { curr->finalize(); } - void visitSIMDExtract(SIMDExtract* curr) { curr->finalize(); } - void visitSIMDReplace(SIMDReplace* curr) { curr->finalize(); } - void visitSIMDShuffle(SIMDShuffle* curr) { curr->finalize(); } - void visitSIMDTernary(SIMDTernary* curr) { curr->finalize(); } - void visitSIMDShift(SIMDShift* curr) { curr->finalize(); } - void visitSIMDLoad(SIMDLoad* curr) { curr->finalize(); } - void visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { curr->finalize(); } - void visitMemoryInit(MemoryInit* curr) { curr->finalize(); } - void visitDataDrop(DataDrop* curr) { curr->finalize(); } - void visitMemoryCopy(MemoryCopy* curr) { curr->finalize(); } - void visitMemoryFill(MemoryFill* curr) { curr->finalize(); } - void visitConst(Const* curr) { curr->finalize(); } - void visitUnary(Unary* curr) { curr->finalize(); } - void visitBinary(Binary* curr) { curr->finalize(); } - void visitSelect(Select* curr) { curr->finalize(); } - void visitDrop(Drop* curr) { curr->finalize(); } - void visitReturn(Return* curr) { curr->finalize(); } - void visitMemorySize(MemorySize* curr) { curr->finalize(); } - void visitMemoryGrow(MemoryGrow* curr) { curr->finalize(); } - void visitRefNull(RefNull* curr) { curr->finalize(); } - void visitRefIsNull(RefIsNull* curr) { curr->finalize(); } - void visitRefFunc(RefFunc* curr) { curr->finalize(); } - void visitRefEq(RefEq* curr) { curr->finalize(); } - void visitTry(Try* curr) { curr->finalize(); } - void visitThrow(Throw* curr) { curr->finalize(); } - void visitRethrow(Rethrow* curr) { curr->finalize(); } - void visitBrOnExn(BrOnExn* curr) { curr->finalize(); } - void visitNop(Nop* curr) { curr->finalize(); } - void visitUnreachable(Unreachable* curr) { curr->finalize(); } - void visitPop(Pop* curr) { curr->finalize(); } - void visitTupleMake(TupleMake* curr) { curr->finalize(); } - void visitTupleExtract(TupleExtract* curr) { curr->finalize(); } - void visitI31New(I31New* curr) { curr->finalize(); } - void visitI31Get(I31Get* curr) { curr->finalize(); } - void visitRefTest(RefTest* curr) { curr->finalize(); } - void visitRefCast(RefCast* curr) { curr->finalize(); } - void visitBrOnCast(BrOnCast* curr) { curr->finalize(); } - void visitRttCanon(RttCanon* curr) { curr->finalize(); } - void visitRttSub(RttSub* curr) { curr->finalize(); } - void visitStructNew(StructNew* curr) { curr->finalize(); } - void visitStructGet(StructGet* curr) { curr->finalize(); } - void visitStructSet(StructSet* curr) { curr->finalize(); } - void visitArrayNew(ArrayNew* curr) { curr->finalize(); } - void visitArrayGet(ArrayGet* curr) { curr->finalize(); } - void visitArraySet(ArraySet* curr) { curr->finalize(); } - void visitArrayLen(ArrayLen* curr) { curr->finalize(); } +#define DELEGATE(CLASS_TO_VISIT) \ + void visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr) { curr->finalize(); } + +#include "wasm-delegations.h" void visitExport(Export* curr) { WASM_UNREACHABLE("unimp"); } void visitGlobal(Global* curr) { WASM_UNREACHABLE("unimp"); } |