diff options
author | Alon Zakai <azakai@google.com> | 2020-11-12 14:35:30 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-12 14:35:30 -0800 |
commit | 8dcbab155f72a31110d53ad3c60d96d5b6db744c (patch) | |
tree | 70509fb488b05dd67732a803ac9965d5cf398481 | |
parent | d239a265b95ee75d610e795861390eb57accea58 (diff) | |
download | binaryen-8dcbab155f72a31110d53ad3c60d96d5b6db744c.tar.gz binaryen-8dcbab155f72a31110d53ad3c60d96d5b6db744c.tar.bz2 binaryen-8dcbab155f72a31110d53ad3c60d96d5b6db744c.zip |
Remove some boilerplate in the C API (#3346)
Also slightly reorder some code in the binary writer headers, that
I noticed while looking for boilerplate.
-rw-r--r-- | src/binaryen-c.cpp | 152 | ||||
-rw-r--r-- | src/binaryen-c.h | 69 | ||||
-rw-r--r-- | src/wasm-binary.h | 7 |
3 files changed, 16 insertions, 212 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index e164c0312..443549de9 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -178,151 +178,13 @@ WASM_DEPRECATED BinaryenType BinaryenUndefined(void) { return uint32_t(-1); } BinaryenExpressionId BinaryenInvalidId(void) { return Expression::Id::InvalidId; } -BinaryenExpressionId BinaryenBlockId(void) { return Expression::Id::BlockId; } -BinaryenExpressionId BinaryenIfId(void) { return Expression::Id::IfId; } -BinaryenExpressionId BinaryenLoopId(void) { return Expression::Id::LoopId; } -BinaryenExpressionId BinaryenBreakId(void) { return Expression::Id::BreakId; } -BinaryenExpressionId BinaryenSwitchId(void) { return Expression::Id::SwitchId; } -BinaryenExpressionId BinaryenCallId(void) { return Expression::Id::CallId; } -BinaryenExpressionId BinaryenCallIndirectId(void) { - return Expression::Id::CallIndirectId; -} -BinaryenExpressionId BinaryenLocalGetId(void) { - return Expression::Id::LocalGetId; -} -BinaryenExpressionId BinaryenLocalSetId(void) { - return Expression::Id::LocalSetId; -} -BinaryenExpressionId BinaryenGlobalGetId(void) { - return Expression::Id::GlobalGetId; -} -BinaryenExpressionId BinaryenGlobalSetId(void) { - return Expression::Id::GlobalSetId; -} -BinaryenExpressionId BinaryenLoadId(void) { return Expression::Id::LoadId; } -BinaryenExpressionId BinaryenStoreId(void) { return Expression::Id::StoreId; } -BinaryenExpressionId BinaryenConstId(void) { return Expression::Id::ConstId; } -BinaryenExpressionId BinaryenUnaryId(void) { return Expression::Id::UnaryId; } -BinaryenExpressionId BinaryenBinaryId(void) { return Expression::Id::BinaryId; } -BinaryenExpressionId BinaryenSelectId(void) { return Expression::Id::SelectId; } -BinaryenExpressionId BinaryenDropId(void) { return Expression::Id::DropId; } -BinaryenExpressionId BinaryenReturnId(void) { return Expression::Id::ReturnId; } -BinaryenExpressionId BinaryenMemorySizeId(void) { - return Expression::Id::MemorySizeId; -} -BinaryenExpressionId BinaryenMemoryGrowId(void) { - return Expression::Id::MemoryGrowId; -} -BinaryenExpressionId BinaryenNopId(void) { return Expression::Id::NopId; } -BinaryenExpressionId BinaryenUnreachableId(void) { - return Expression::Id::UnreachableId; -} -BinaryenExpressionId BinaryenAtomicCmpxchgId(void) { - return Expression::Id::AtomicCmpxchgId; -} -BinaryenExpressionId BinaryenAtomicRMWId(void) { - return Expression::Id::AtomicRMWId; -} -BinaryenExpressionId BinaryenAtomicWaitId(void) { - return Expression::Id::AtomicWaitId; -} -BinaryenExpressionId BinaryenAtomicNotifyId(void) { - return Expression::Id::AtomicNotifyId; -} -BinaryenExpressionId BinaryenAtomicFenceId(void) { - return Expression::Id::AtomicFenceId; -} -BinaryenExpressionId BinaryenSIMDExtractId(void) { - return Expression::Id::SIMDExtractId; -} -BinaryenExpressionId BinaryenSIMDReplaceId(void) { - return Expression::Id::SIMDReplaceId; -} -BinaryenExpressionId BinaryenSIMDShuffleId(void) { - return Expression::Id::SIMDShuffleId; -} -BinaryenExpressionId BinaryenSIMDTernaryId(void) { - return Expression::Id::SIMDTernaryId; -} -BinaryenExpressionId BinaryenSIMDShiftId(void) { - return Expression::Id::SIMDShiftId; -} -BinaryenExpressionId BinaryenSIMDLoadId(void) { - return Expression::Id::SIMDLoadId; -} -BinaryenExpressionId BinaryenMemoryInitId(void) { - return Expression::Id::MemoryInitId; -} -BinaryenExpressionId BinaryenDataDropId(void) { - return Expression::Id::DataDropId; -} -BinaryenExpressionId BinaryenMemoryCopyId(void) { - return Expression::Id::MemoryCopyId; -} -BinaryenExpressionId BinaryenMemoryFillId(void) { - return Expression::Id::MemoryFillId; -} -BinaryenExpressionId BinaryenRefNullId(void) { - return Expression::Id::RefNullId; -} -BinaryenExpressionId BinaryenRefIsNullId(void) { - return Expression::Id::RefIsNullId; -} -BinaryenExpressionId BinaryenRefFuncId(void) { - return Expression::Id::RefFuncId; -} -BinaryenExpressionId BinaryenRefEqId(void) { return Expression::Id::RefEqId; } -BinaryenExpressionId BinaryenTryId(void) { return Expression::Id::TryId; } -BinaryenExpressionId BinaryenThrowId(void) { return Expression::Id::ThrowId; } -BinaryenExpressionId BinaryenRethrowId(void) { - return Expression::Id::RethrowId; -} -BinaryenExpressionId BinaryenBrOnExnId(void) { - return Expression::Id::BrOnExnId; -} -BinaryenExpressionId BinaryenTupleMakeId(void) { - return Expression::Id::TupleMakeId; -} -BinaryenExpressionId BinaryenTupleExtractId(void) { - return Expression::Id::TupleExtractId; -} -BinaryenExpressionId BinaryenPopId(void) { return Expression::Id::PopId; } -BinaryenExpressionId BinaryenI31NewId(void) { return Expression::Id::I31NewId; } -BinaryenExpressionId BinaryenI31GetId(void) { return Expression::Id::I31GetId; } -BinaryenExpressionId BinaryenRefTestId(void) { - return Expression::Id::RefTestId; -} -BinaryenExpressionId BinaryenRefCastId(void) { - return Expression::Id::RefCastId; -} -BinaryenExpressionId BinaryenBrOnCastId(void) { - return Expression::Id::BrOnCastId; -} -BinaryenExpressionId BinaryenRttCanonId(void) { - return Expression::Id::RttCanonId; -} -BinaryenExpressionId BinaryenRttSubId(void) { return Expression::Id::RttSubId; } -BinaryenExpressionId BinaryenStructNewId(void) { - return Expression::Id::StructNewId; -} -BinaryenExpressionId BinaryenStructGetId(void) { - return Expression::Id::StructGetId; -} -BinaryenExpressionId BinaryenStructSetId(void) { - return Expression::Id::StructSetId; -} -BinaryenExpressionId BinaryenArrayNewId(void) { - return Expression::Id::ArrayNewId; -} -BinaryenExpressionId BinaryenArrayGetId(void) { - return Expression::Id::ArrayGetId; -} -BinaryenExpressionId BinaryenArraySetId(void) { - return Expression::Id::ArraySetId; -} -BinaryenExpressionId BinaryenArrayLenId(void) { - return Expression::Id::ArrayLenId; -} + +#define DELEGATE(CLASS_TO_VISIT) \ + BinaryenExpressionId Binaryen##CLASS_TO_VISIT##Id(void) { \ + return Expression::Id::CLASS_TO_VISIT##Id; \ + } + +#include "wasm-delegations.h" // External kinds diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 5b6da7699..c185b59f4 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -125,70 +125,11 @@ WASM_DEPRECATED BinaryenType BinaryenUndefined(void); typedef uint32_t BinaryenExpressionId; BINARYEN_API BinaryenExpressionId BinaryenInvalidId(void); -BINARYEN_API BinaryenExpressionId BinaryenBlockId(void); -BINARYEN_API BinaryenExpressionId BinaryenIfId(void); -BINARYEN_API BinaryenExpressionId BinaryenLoopId(void); -BINARYEN_API BinaryenExpressionId BinaryenBreakId(void); -BINARYEN_API BinaryenExpressionId BinaryenSwitchId(void); -BINARYEN_API BinaryenExpressionId BinaryenCallId(void); -BINARYEN_API BinaryenExpressionId BinaryenCallIndirectId(void); -BINARYEN_API BinaryenExpressionId BinaryenLocalGetId(void); -BINARYEN_API BinaryenExpressionId BinaryenLocalSetId(void); -BINARYEN_API BinaryenExpressionId BinaryenGlobalGetId(void); -BINARYEN_API BinaryenExpressionId BinaryenGlobalSetId(void); -BINARYEN_API BinaryenExpressionId BinaryenLoadId(void); -BINARYEN_API BinaryenExpressionId BinaryenStoreId(void); -BINARYEN_API BinaryenExpressionId BinaryenConstId(void); -BINARYEN_API BinaryenExpressionId BinaryenUnaryId(void); -BINARYEN_API BinaryenExpressionId BinaryenBinaryId(void); -BINARYEN_API BinaryenExpressionId BinaryenSelectId(void); -BINARYEN_API BinaryenExpressionId BinaryenDropId(void); -BINARYEN_API BinaryenExpressionId BinaryenReturnId(void); -BINARYEN_API BinaryenExpressionId BinaryenMemorySizeId(void); -BINARYEN_API BinaryenExpressionId BinaryenMemoryGrowId(void); -BINARYEN_API BinaryenExpressionId BinaryenNopId(void); -BINARYEN_API BinaryenExpressionId BinaryenUnreachableId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicCmpxchgId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicRMWId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicWaitId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicNotifyId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicFenceId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDExtractId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDReplaceId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDShuffleId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDTernaryId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDShiftId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDLoadId(void); -// TODO: Expose SIMDLoadStoreLane in C and JS APIs -BINARYEN_API BinaryenExpressionId BinaryenMemoryInitId(void); -BINARYEN_API BinaryenExpressionId BinaryenDataDropId(void); -BINARYEN_API BinaryenExpressionId BinaryenMemoryCopyId(void); -BINARYEN_API BinaryenExpressionId BinaryenMemoryFillId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefNullId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefIsNullId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefFuncId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefEqId(void); -BINARYEN_API BinaryenExpressionId BinaryenTryId(void); -BINARYEN_API BinaryenExpressionId BinaryenThrowId(void); -BINARYEN_API BinaryenExpressionId BinaryenRethrowId(void); -BINARYEN_API BinaryenExpressionId BinaryenBrOnExnId(void); -BINARYEN_API BinaryenExpressionId BinaryenTupleMakeId(void); -BINARYEN_API BinaryenExpressionId BinaryenTupleExtractId(void); -BINARYEN_API BinaryenExpressionId BinaryenPopId(void); -BINARYEN_API BinaryenExpressionId BinaryenI31NewId(void); -BINARYEN_API BinaryenExpressionId BinaryenI31GetId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefTestId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefCastId(void); -BINARYEN_API BinaryenExpressionId BinaryenBrOnCastId(void); -BINARYEN_API BinaryenExpressionId BinaryenRttCanonId(void); -BINARYEN_API BinaryenExpressionId BinaryenRttSubId(void); -BINARYEN_API BinaryenExpressionId BinaryenStructNewId(void); -BINARYEN_API BinaryenExpressionId BinaryenStructGetId(void); -BINARYEN_API BinaryenExpressionId BinaryenStructSetId(void); -BINARYEN_API BinaryenExpressionId BinaryenArrayNewId(void); -BINARYEN_API BinaryenExpressionId BinaryenArrayGetId(void); -BINARYEN_API BinaryenExpressionId BinaryenArraySetId(void); -BINARYEN_API BinaryenExpressionId BinaryenArrayLenId(void); + +#define DELEGATE(CLASS_TO_VISIT) \ + BINARYEN_API BinaryenExpressionId Binaryen##CLASS_TO_VISIT##Id(void); + +#include "wasm-delegations.h" // External kinds (call to get the value of each; you can cache them) diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 1dba8573a..205a9b447 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -1475,19 +1475,20 @@ public: // Gets a block of expressions. If it's just one, return that singleton. Expression* getBlockOrSingleton(Type type); + BreakTarget getBreakTarget(int32_t offset); + + void readMemoryAccess(Address& alignment, Address& offset); + void visitIf(If* curr); void visitLoop(Loop* curr); - BreakTarget getBreakTarget(int32_t offset); void visitBreak(Break* curr, uint8_t code); void visitSwitch(Switch* curr); - void visitCall(Call* curr); void visitCallIndirect(CallIndirect* curr); void visitLocalGet(LocalGet* curr); void visitLocalSet(LocalSet* curr, uint8_t code); void visitGlobalGet(GlobalGet* curr); void visitGlobalSet(GlobalSet* curr); - void readMemoryAccess(Address& alignment, Address& offset); bool maybeVisitLoad(Expression*& out, uint8_t code, bool isAtomic); bool maybeVisitStore(Expression*& out, uint8_t code, bool isAtomic); bool maybeVisitNontrappingTrunc(Expression*& out, uint32_t code); |