diff options
-rw-r--r-- | src/binaryen-c.cpp | 12 | ||||
-rw-r--r-- | src/binaryen-c.h | 4 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 28 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js | 4 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 24 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 24 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.txt | 4 |
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 |