summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/binaryen-c.cpp12
-rw-r--r--src/binaryen-c.h4
-rw-r--r--src/js/binaryen.js-post.js28
-rw-r--r--test/binaryen.js/kitchen-sink.js4
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt24
-rw-r--r--test/example/c-api-kitchen-sink.c24
-rw-r--r--test/example/c-api-kitchen-sink.txt4
7 files changed, 100 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index caf3ea9e6..682272201 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -183,6 +183,18 @@ BinaryenType BinaryenTypeI31ref(void) {
BinaryenType BinaryenTypeDataref(void) {
return Type(HeapType::data, NonNullable).getID();
}
+BinaryenType BinaryenTypeStringref() {
+ return Type(HeapType::string, Nullable).getID();
+}
+BinaryenType BinaryenTypeStringviewWTF8() {
+ return Type(HeapType::stringview_wtf8, Nullable).getID();
+}
+BinaryenType BinaryenTypeStringviewWTF16() {
+ return Type(HeapType::stringview_wtf16, Nullable).getID();
+}
+BinaryenType BinaryenTypeStringviewIter() {
+ return Type(HeapType::stringview_iter, Nullable).getID();
+}
BinaryenType BinaryenTypeUnreachable(void) { return Type::unreachable; }
BinaryenType BinaryenTypeAuto(void) { return uintptr_t(-1); }
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 558c9c1fe..f7825b080 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -105,6 +105,10 @@ BINARYEN_API BinaryenType BinaryenTypeAnyref(void);
BINARYEN_API BinaryenType BinaryenTypeEqref(void);
BINARYEN_API BinaryenType BinaryenTypeI31ref(void);
BINARYEN_API BinaryenType BinaryenTypeDataref(void);
+BINARYEN_API BinaryenType BinaryenTypeStringref(void);
+BINARYEN_API BinaryenType BinaryenTypeStringviewWTF8(void);
+BINARYEN_API BinaryenType BinaryenTypeStringviewWTF16(void);
+BINARYEN_API BinaryenType BinaryenTypeStringviewIter(void);
BINARYEN_API BinaryenType BinaryenTypeUnreachable(void);
// Not a real type. Used as the last parameter to BinaryenBlock to let
// the API figure out the type instead of providing one.
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 43d34393b..9e1534070 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -39,6 +39,10 @@ function initializeConstants() {
['eqref', 'Eqref'],
['i31ref', 'I31ref'],
['dataref', 'Dataref'],
+ ['stringref', 'Stringref'],
+ ['stringview_wtf8', 'StringviewWTF8'],
+ ['stringview_wtf16', 'StringviewWTF16'],
+ ['stringview_iter', 'StringviewIter'],
['unreachable', 'Unreachable'],
['auto', 'Auto']
].forEach(entry => {
@@ -2265,6 +2269,30 @@ function wrapModule(module, self = {}) {
}
};
+ self['stringref'] = {
+ 'pop'() {
+ return Module['_BinaryenPop'](module, Module['stringref']);
+ }
+ };
+
+ self['stringview_wtf8'] = {
+ 'pop'() {
+ return Module['_BinaryenPop'](module, Module['stringview_wtf8']);
+ }
+ };
+
+ self['stringview_wtf16'] = {
+ 'pop'() {
+ return Module['_BinaryenPop'](module, Module['stringview_wtf16']);
+ }
+ };
+
+ self['stringview_iter'] = {
+ 'pop'() {
+ return Module['_BinaryenPop'](module, Module['stringview_iter']);
+ }
+ };
+
self['ref'] = {
'null'(type) {
return Module['_BinaryenRefNull'](module, type);
diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js
index c76884732..c613ae1a5 100644
--- a/test/binaryen.js/kitchen-sink.js
+++ b/test/binaryen.js/kitchen-sink.js
@@ -633,6 +633,10 @@ function test_core() {
module.eqref.pop(),
module.i31ref.pop(),
module.dataref.pop(),
+ module.stringref.pop(),
+ module.stringview_wtf8.pop(),
+ module.stringview_wtf16.pop(),
+ module.stringview_iter.pop(),
// Memory
module.memory.size(),
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index 46eeae51b..a026d4be1 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -2169,6 +2169,18 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
(pop dataref)
)
(drop
+ (pop stringref)
+ )
+ (drop
+ (pop stringview_wtf8)
+ )
+ (drop
+ (pop stringview_wtf16)
+ )
+ (drop
+ (pop stringview_iter)
+ )
+ (drop
(memory.size)
)
(drop
@@ -4261,6 +4273,18 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
(pop dataref)
)
(drop
+ (pop stringref)
+ )
+ (drop
+ (pop stringview_wtf8)
+ )
+ (drop
+ (pop stringview_wtf16)
+ )
+ (drop
+ (pop stringview_iter)
+ )
+ (drop
(memory.size)
)
(drop
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index fa4194d9d..54446711a 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -270,6 +270,30 @@ void test_types() {
BinaryenTypeExpand(dataref, &valueType);
assert(valueType == dataref);
+ BinaryenType stringref = BinaryenTypeStringref();
+ printf("BinaryenTypeStringref: (ptr)\n");
+ assert(BinaryenTypeArity(stringref) == 1);
+ BinaryenTypeExpand(stringref, &valueType);
+ assert(valueType == stringref);
+
+ BinaryenType stringview_wtf8_ = BinaryenTypeStringviewWTF8();
+ printf("BinaryenTypeStringviewWTF8: (ptr)\n");
+ assert(BinaryenTypeArity(stringview_wtf8_) == 1);
+ BinaryenTypeExpand(stringview_wtf8_, &valueType);
+ assert(valueType == stringview_wtf8_);
+
+ BinaryenType stringview_wtf16_ = BinaryenTypeStringviewWTF16();
+ printf("BinaryenTypeStringviewWTF16: (ptr)\n");
+ assert(BinaryenTypeArity(stringview_wtf16_) == 1);
+ BinaryenTypeExpand(stringview_wtf16_, &valueType);
+ assert(valueType == stringview_wtf16_);
+
+ BinaryenType stringview_iter_ = BinaryenTypeStringviewIter();
+ printf("BinaryenTypeStringviewIter: (ptr)\n");
+ assert(BinaryenTypeArity(stringview_iter_) == 1);
+ BinaryenTypeExpand(stringview_iter_, &valueType);
+ assert(valueType == stringview_iter_);
+
printf("BinaryenTypeAuto: %zd\n", BinaryenTypeAuto());
BinaryenType pair[] = {i32, i32};
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index 8e04ff3fe..518e8ea5e 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -11,6 +11,10 @@ BinaryenTypeAnyref: (ptr)
BinaryenTypeEqref: (ptr)
BinaryenTypeI31ref: (ptr)
BinaryenTypeDataref: (ptr)
+BinaryenTypeStringref: (ptr)
+BinaryenTypeStringviewWTF8: (ptr)
+BinaryenTypeStringviewWTF16: (ptr)
+BinaryenTypeStringviewIter: (ptr)
BinaryenTypeAuto: -1
BinaryenPackedTypeNotPacked: 0
BinaryenPackedTypeInt8: 1