summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2020-11-12 14:35:30 -0800
committerGitHub <noreply@github.com>2020-11-12 14:35:30 -0800
commit8dcbab155f72a31110d53ad3c60d96d5b6db744c (patch)
tree70509fb488b05dd67732a803ac9965d5cf398481 /src
parentd239a265b95ee75d610e795861390eb57accea58 (diff)
downloadbinaryen-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.
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp152
-rw-r--r--src/binaryen-c.h69
-rw-r--r--src/wasm-binary.h7
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);