diff options
author | Daniel Wirtz <dcode@dcode.io> | 2021-02-26 09:05:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-26 09:05:00 +0100 |
commit | 856c70b5985da942ffea82a613fc8357055020f2 (patch) | |
tree | 8780de464948eb4d4e0dc4f622289b4f950a77aa /src | |
parent | 3bc8c3b348699f45131f823b49024138f1992368 (diff) | |
download | binaryen-856c70b5985da942ffea82a613fc8357055020f2.tar.gz binaryen-856c70b5985da942ffea82a613fc8357055020f2.tar.bz2 binaryen-856c70b5985da942ffea82a613fc8357055020f2.zip |
Add RefIsGetOp/SetOp in C and JS API (#3605)
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 10 | ||||
-rw-r--r-- | src/binaryen-c.h | 10 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 6 |
3 files changed, 23 insertions, 3 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 26a9c5801..0635046fe 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -2727,6 +2727,16 @@ void BinaryenMemoryFillSetSize(BinaryenExpressionRef expr, static_cast<MemoryFill*>(expression)->size = (Expression*)sizeExpr; } // RefIs +BinaryenOp BinaryenRefIsGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<RefIs>()); + return static_cast<RefIs*>(expression)->op; +} +void BinaryenRefIsSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<RefIs>()); + static_cast<RefIs*>(expression)->op = RefIsOp(op); +} BinaryenExpressionRef BinaryenRefIsGetValue(BinaryenExpressionRef expr) { auto* expression = (Expression*)expr; assert(expression->is<RefIs>()); diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 44895f970..e70e9830e 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -1688,12 +1688,16 @@ BinaryenMemoryFillGetSize(BinaryenExpressionRef expr); BINARYEN_API void BinaryenMemoryFillSetSize(BinaryenExpressionRef expr, BinaryenExpressionRef sizeExpr); -// RefIsNull +// RefIs -// Gets the value expression tested to be null of a `ref.is_null` expression. +// Gets the operation performed by a `ref.is_*` expression. +BINARYEN_API BinaryenOp BinaryenRefIsGetOp(BinaryenExpressionRef expr); +// Sets the operation performed by a `ref.is_*` expression. +BINARYEN_API void BinaryenRefIsSetOp(BinaryenExpressionRef expr, BinaryenOp op); +// Gets the value expression tested by a `ref.is_*` expression. BINARYEN_API BinaryenExpressionRef BinaryenRefIsGetValue(BinaryenExpressionRef expr); -// Sets the value expression tested to be null of a `ref.is_null` expression. +// Sets the value expression tested by a `ref.is_*` expression. BINARYEN_API void BinaryenRefIsSetValue(BinaryenExpressionRef expr, BinaryenExpressionRef valueExpr); diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 7c53298ad..4f4af2b63 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -4142,6 +4142,12 @@ Module['MemoryFill'] = makeExpressionWrapper({ }); Module['RefIs'] = makeExpressionWrapper({ + 'getOp'(expr) { + return Module['_BinaryenRefIsGetOp'](expr); + }, + 'setOp'(expr, op) { + Module['_BinaryenRefIsSetOp'](expr, op); + }, 'getValue'(expr) { return Module['_BinaryenRefIsGetValue'](expr); }, |