diff options
Diffstat (limited to 'src/js/binaryen.js-post.js')
-rw-r--r-- | src/js/binaryen.js-post.js | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index baaa71429..d3cf7d449 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -96,7 +96,9 @@ function initializeConstants() { 'BrOnExn', 'TupleMake', 'TupleExtract', - 'Pop' + 'Pop', + 'I31New', + 'I31Get' ].forEach(name => { Module['ExpressionIds'][name] = Module[name + 'Id'] = Module['_Binaryen' + name + 'Id'](); }); @@ -2148,6 +2150,18 @@ function wrapModule(module, self = {}) { } }; + self['i31'] = { + 'new'(value) { + return Module['_BinaryenI31New'](module, value); + }, + 'get_s'(i31) { + return Module['_BinaryenI31Get'](module, i31, 1); + }, + 'get_u'(i31) { + return Module['_BinaryenI31Get'](module, i31, 0); + } + }; + // 'Module' operations self['addFunction'] = function(name, params, results, varTypes, body) { return preserveStack(() => @@ -2856,6 +2870,19 @@ Module['getExpressionInfo'] = function(expr) { 'tuple': Module['_BinaryenTupleExtractGetTuple'](expr), 'index': Module['_BinaryenTupleExtractGetIndex'](expr) }; + case Module['I31NewId']: + return { + 'id': id, + 'type': type, + 'value': Module['_BinaryenI31NewGetValue'](expr) + }; + case Module['I31GetId']: + return { + 'id': id, + 'type': type, + 'i31': Module['_BinaryenI31GetGetI31'](expr), + 'isSigned': Boolean(Module['_BinaryenI31GetIsSigned'](expr)) + }; default: throw Error('unexpected id: ' + id); @@ -4285,6 +4312,30 @@ Module['TupleExtract'] = makeExpressionWrapper({ } }); +Module['I31New'] = makeExpressionWrapper({ + 'getValue'(expr) { + return Module['_BinaryenI31NewGetValue'](expr); + }, + 'setValue'(expr, valueExpr) { + Module['_BinaryenI31NewSetValue'](expr, valueExpr); + } +}); + +Module['I31Get'] = makeExpressionWrapper({ + 'getI31'(expr) { + return Module['_BinaryenI31GetGetI31'](expr); + }, + 'setI31'(expr, i31Expr) { + Module['_BinaryenI31GetSetI31'](expr, i31Expr); + }, + 'isSigned'(expr) { + return Boolean(Module['_BinaryenI31GetIsSigned'](expr)); + }, + 'setSigned'(expr, isSigned) { + Module['_BinaryenI31GetSetSigned'](expr, isSigned); + } +}); + // Function wrapper Module['Function'] = (() => { |