From 0cd9fb599fc5a44df7774d5f180d912ccab8c941 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 27 Jul 2022 21:16:09 +0200 Subject: [C/JS API] Add string reference types (#4810) --- src/binaryen-c.cpp | 12 ++++++++++++ src/binaryen-c.h | 4 ++++ src/js/binaryen.js-post.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) (limited to 'src') 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); -- cgit v1.2.3