summaryrefslogtreecommitdiff
path: root/src/js/binaryen.js-post.js
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2021-03-01 22:26:10 +0100
committerGitHub <noreply@github.com>2021-03-01 22:26:10 +0100
commit0d83a4d43f6215334773154f5b8314e27ed3b568 (patch)
tree0ad4f31fc9431bcc4898bf4dc48de9b6c89c83b7 /src/js/binaryen.js-post.js
parentd137e7f8fb5ae943b115885f256ad57bfae67f6b (diff)
downloadbinaryen-0d83a4d43f6215334773154f5b8314e27ed3b568.tar.gz
binaryen-0d83a4d43f6215334773154f5b8314e27ed3b568.tar.bz2
binaryen-0d83a4d43f6215334773154f5b8314e27ed3b568.zip
Add C and JS API bindings for ref.as_* (#3628)
Diffstat (limited to 'src/js/binaryen.js-post.js')
-rw-r--r--src/js/binaryen.js-post.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 4416e4d10..785c56106 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -491,6 +491,10 @@ function initializeConstants() {
'RefIsFunc',
'RefIsData',
'RefIsI31',
+ 'RefAsNonNull',
+ 'RefAsFunc',
+ 'RefAsData',
+ 'RefAsI31',
].forEach(name => {
Module['Operations'][name] = Module[name] = Module['_Binaryen' + name]();
});
@@ -2118,6 +2122,18 @@ function wrapModule(module, self = {}) {
'is_i31'(value) {
return Module['_BinaryenRefIs'](module, Module['RefIsI31'], value);
},
+ 'as_non_null'(value) {
+ return Module['_BinaryenRefAs'](module, Module['RefAsNonNull'], value);
+ },
+ 'as_func'(value) {
+ return Module['_BinaryenRefAs'](module, Module['RefAsFunc'], value);
+ },
+ 'as_data'(value) {
+ return Module['_BinaryenRefAs'](module, Module['RefAsData'], value);
+ },
+ 'as_i31'(value) {
+ return Module['_BinaryenRefAs'](module, Module['RefAsI31'], value);
+ },
'func'(func, type) {
return preserveStack(() => Module['_BinaryenRefFunc'](module, strToStack(func), type));
},
@@ -2879,8 +2895,16 @@ Module['getExpressionInfo'] = function(expr) {
return {
'id': id,
'type': type,
+ 'op': Module['_BinaryenRefIsGetOp'](expr),
'value': Module['_BinaryenRefIsGetValue'](expr)
};
+ case Module['RefAsId']:
+ return {
+ 'id': id,
+ 'type': type,
+ 'op': Module['_BinaryenRefAsGetOp'](expr),
+ 'value': Module['_BinaryenRefAsGetValue'](expr)
+ };
case Module['RefFuncId']:
return {
'id': id,
@@ -4157,6 +4181,21 @@ Module['RefIs'] = makeExpressionWrapper({
}
});
+Module['RefAs'] = makeExpressionWrapper({
+ 'getOp'(expr) {
+ return Module['_BinaryenRefAsGetOp'](expr);
+ },
+ 'setOp'(expr, op) {
+ Module['_BinaryenRefAsSetOp'](expr, op);
+ },
+ 'getValue'(expr) {
+ return Module['_BinaryenRefAsGetValue'](expr);
+ },
+ 'setValue'(expr, valueExpr) {
+ Module['_BinaryenRefAsSetValue'](expr, valueExpr);
+ }
+});
+
Module['RefFunc'] = makeExpressionWrapper({
'getFunc'(expr) {
return UTF8ToString(Module['_BinaryenRefFuncGetFunc'](expr));