summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordcode <dcode@dcode.io>2022-07-27 21:16:09 +0200
committerGitHub <noreply@github.com>2022-07-27 12:16:09 -0700
commit0cd9fb599fc5a44df7774d5f180d912ccab8c941 (patch)
treec4314a6709f3e2710961774610fe046b50de7aef /src
parent85b05ebd648e7cc282777a2f445fe9c5b111eeb9 (diff)
downloadbinaryen-0cd9fb599fc5a44df7774d5f180d912ccab8c941.tar.gz
binaryen-0cd9fb599fc5a44df7774d5f180d912ccab8c941.tar.bz2
binaryen-0cd9fb599fc5a44df7774d5f180d912ccab8c941.zip
[C/JS API] Add string reference types (#4810)
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp12
-rw-r--r--src/binaryen-c.h4
-rw-r--r--src/js/binaryen.js-post.js28
3 files changed, 44 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);