Expose MemoryOrder enums for atomic operations
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 146a908..331fb9d 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp
@@ -419,6 +419,18 @@ return static_cast<BinaryenExternalKind>(ExternalKind::Tag); } +// MemoryOrder for atomic operations + +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderUnordered(void) { + return static_cast<BinaryenMemoryOrder>(MemoryOrder::Unordered); +} +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderSeqCst(void) { + return static_cast<BinaryenMemoryOrder>(MemoryOrder::SeqCst); +} +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderAcqRel(void) { + return static_cast<BinaryenMemoryOrder>(MemoryOrder::AcqRel); +} + // Features BinaryenFeatures BinaryenFeatureMVP(void) {
diff --git a/src/binaryen-c.h b/src/binaryen-c.h index f76741b..1337baf 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h
@@ -203,6 +203,14 @@ BINARYEN_API BinaryenExternalKind BinaryenExternalGlobal(void); BINARYEN_API BinaryenExternalKind BinaryenExternalTag(void); +// MemoryOrder for atomic operations + +typedef uint8_t BinaryenMemoryOrder; + +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderUnordered(void); +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderSeqCst(void); +BINARYEN_API BinaryenMemoryOrder BinaryenMemoryOrderAcqRel(void); + // Features. Call to get the value of each; you can cache them. Use bitwise // operators to combine and test particular features.
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 82a6695..1fee8df 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js
@@ -157,6 +157,15 @@ Module['ExternalKinds'][name] = Module['External' + name] = Module['_BinaryenExternal' + name](); }); + // MemoryOrder for atomic operations + Module['MemoryOrder'] = {}; + [ 'Unordered', + 'SeqCst', + 'AcqRel' + ].forEach(name => { + Module['MemoryOrder'][name] = Module['_BinaryenMemoryOrder' + name]() + }); + // Features Module['Features'] = {}; [ 'MVP',
diff --git a/src/wasm.h b/src/wasm.h index 5c36d5b..abf5297 100644 --- a/src/wasm.h +++ b/src/wasm.h
@@ -65,7 +65,7 @@ } }; -enum class MemoryOrder { +enum class MemoryOrder : uint8_t { Unordered, SeqCst, AcqRel,