diff options
author | dcode <dcode@dcode.io> | 2022-07-27 21:16:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-27 12:16:09 -0700 |
commit | 0cd9fb599fc5a44df7774d5f180d912ccab8c941 (patch) | |
tree | c4314a6709f3e2710961774610fe046b50de7aef /src | |
parent | 85b05ebd648e7cc282777a2f445fe9c5b111eeb9 (diff) | |
download | binaryen-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.cpp | 12 | ||||
-rw-r--r-- | src/binaryen-c.h | 4 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 28 |
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); |