diff options
author | Daniel Wirtz <dcode@dcode.io> | 2021-03-01 22:26:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-01 22:26:10 +0100 |
commit | 0d83a4d43f6215334773154f5b8314e27ed3b568 (patch) | |
tree | 0ad4f31fc9431bcc4898bf4dc48de9b6c89c83b7 /src/js/binaryen.js-post.js | |
parent | d137e7f8fb5ae943b115885f256ad57bfae67f6b (diff) | |
download | binaryen-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.js | 39 |
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)); |