summaryrefslogtreecommitdiff
path: root/src/js/binaryen.js-post.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/binaryen.js-post.js')
-rw-r--r--src/js/binaryen.js-post.js53
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'] = (() => {