summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordcode <dcode@dcode.io>2022-10-18 23:16:07 +0200
committerGitHub <noreply@github.com>2022-10-18 14:16:07 -0700
commite4fd739f72eae49aa47bef06af9f38625a3a9f33 (patch)
tree6ee226d199c05535a06539b6868d77b060854a0b /src
parent34e7e49cd7fbf520e4f3cfb976b1c88713b18e45 (diff)
downloadbinaryen-e4fd739f72eae49aa47bef06af9f38625a3a9f33.tar.gz
binaryen-e4fd739f72eae49aa47bef06af9f38625a3a9f33.tar.bz2
binaryen-e4fd739f72eae49aa47bef06af9f38625a3a9f33.zip
[C API] Add bottom heap types and array heap type (#5150)
Adds `BinaryenHeapTypeNone`, `BinaryenHeapTypeNoext` and `BinaryenHeapTypeNofunc` to obtain the bottom heap types. Also adds `BinaryenHeapTypeIsBottom` to test whether a given heap type is a bottom type, and `BinaryenHeapTypeGetBottom` to obtain the respective bottom type given a heap type.
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp22
-rw-r--r--src/binaryen-c.h9
2 files changed, 31 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index ec70baef2..cd3806810 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -202,6 +202,9 @@ BinaryenType BinaryenTypeI31ref(void) {
BinaryenType BinaryenTypeDataref(void) {
return Type(HeapType::data, NonNullable).getID();
}
+BinaryenType BinaryenTypeArrayref(void) {
+ return Type(HeapType::array, Nullable).getID();
+}
BinaryenType BinaryenTypeStringref() {
return Type(HeapType::string, Nullable).getID();
}
@@ -284,6 +287,9 @@ BinaryenHeapType BinaryenHeapTypeI31() {
BinaryenHeapType BinaryenHeapTypeData() {
return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::data);
}
+BinaryenHeapType BinaryenHeapTypeArray() {
+ return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::array);
+}
BinaryenHeapType BinaryenHeapTypeString() {
return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::string);
}
@@ -299,6 +305,22 @@ BinaryenHeapType BinaryenHeapTypeStringviewIter() {
return static_cast<BinaryenHeapType>(
HeapType::BasicHeapType::stringview_iter);
}
+BinaryenHeapType BinaryenHeapTypeNone() {
+ return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::none);
+}
+BinaryenHeapType BinaryenHeapTypeNoext() {
+ return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::noext);
+}
+BinaryenHeapType BinaryenHeapTypeNofunc() {
+ return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::nofunc);
+}
+
+bool BinaryenHeapTypeIsBottom(BinaryenHeapType heapType) {
+ return HeapType(heapType).isBottom();
+}
+BinaryenHeapType BinaryenHeapTypeGetBottom(BinaryenHeapType heapType) {
+ return static_cast<BinaryenHeapType>(HeapType(heapType).getBottom());
+}
BinaryenHeapType BinaryenTypeGetHeapType(BinaryenType type) {
return Type(type).getHeapType().getID();
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 9cc282721..ea3988cae 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -105,6 +105,7 @@ BINARYEN_API BinaryenType BinaryenTypeAnyref(void);
BINARYEN_API BinaryenType BinaryenTypeEqref(void);
BINARYEN_API BinaryenType BinaryenTypeI31ref(void);
BINARYEN_API BinaryenType BinaryenTypeDataref(void);
+BINARYEN_API BinaryenType BinaryenTypeArrayref(void);
BINARYEN_API BinaryenType BinaryenTypeStringref(void);
BINARYEN_API BinaryenType BinaryenTypeStringviewWTF8(void);
BINARYEN_API BinaryenType BinaryenTypeStringviewWTF16(void);
@@ -146,10 +147,18 @@ BINARYEN_API BinaryenHeapType BinaryenHeapTypeAny(void);
BINARYEN_API BinaryenHeapType BinaryenHeapTypeEq(void);
BINARYEN_API BinaryenHeapType BinaryenHeapTypeI31(void);
BINARYEN_API BinaryenHeapType BinaryenHeapTypeData(void);
+BINARYEN_API BinaryenHeapType BinaryenHeapTypeArray(void);
BINARYEN_API BinaryenHeapType BinaryenHeapTypeString(void);
BINARYEN_API BinaryenHeapType BinaryenHeapTypeStringviewWTF8(void);
BINARYEN_API BinaryenHeapType BinaryenHeapTypeStringviewWTF16(void);
BINARYEN_API BinaryenHeapType BinaryenHeapTypeStringviewIter(void);
+BINARYEN_API BinaryenHeapType BinaryenHeapTypeNone(void);
+BINARYEN_API BinaryenHeapType BinaryenHeapTypeNoext(void);
+BINARYEN_API BinaryenHeapType BinaryenHeapTypeNofunc(void);
+
+BINARYEN_API bool BinaryenHeapTypeIsBottom(BinaryenHeapType heapType);
+BINARYEN_API BinaryenHeapType
+BinaryenHeapTypeGetBottom(BinaryenHeapType heapType);
BINARYEN_API BinaryenHeapType BinaryenTypeGetHeapType(BinaryenType type);
BINARYEN_API bool BinaryenTypeIsNullable(BinaryenType type);