diff options
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r-- | src/binaryen-c.cpp | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 8524b7622..0fcb158d9 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -287,6 +287,8 @@ BinaryenExpressionId BinaryenTupleExtractId(void) { return Expression::Id::TupleExtractId; } BinaryenExpressionId BinaryenPopId(void) { return Expression::Id::PopId; } +BinaryenExpressionId BinaryenI31NewId(void) { return Expression::Id::I31NewId; } +BinaryenExpressionId BinaryenI31GetId(void) { return Expression::Id::I31GetId; } // External kinds @@ -1338,6 +1340,19 @@ BinaryenExpressionRef BinaryenBrOnExn(BinaryenModuleRef module, Builder(*wasm).makeBrOnExn(name, event, (Expression*)exnref)); } +BinaryenExpressionRef BinaryenI31New(BinaryenModuleRef module, + BinaryenExpressionRef value) { + return static_cast<Expression*>( + Builder(*(Module*)module).makeI31New((Expression*)value)); +} + +BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module, + BinaryenExpressionRef i31, + int signed_) { + return static_cast<Expression*>( + Builder(*(Module*)module).makeI31Get((Expression*)i31, signed_ != 0)); +} + // Expression utility BinaryenExpressionId BinaryenExpressionGetId(BinaryenExpressionRef expr) { @@ -2998,7 +3013,6 @@ BinaryenTupleMakeRemoveOperandAt(BinaryenExpressionRef expr, assert(expression->is<TupleMake>()); return static_cast<TupleMake*>(expression)->operands.removeAt(index); } - // TupleExtract BinaryenExpressionRef BinaryenTupleExtractGetTuple(BinaryenExpressionRef expr) { auto* expression = (Expression*)expr; @@ -3023,6 +3037,42 @@ void BinaryenTupleExtractSetIndex(BinaryenExpressionRef expr, assert(expression->is<TupleExtract>()); static_cast<TupleExtract*>(expression)->index = index; } +// I31New +BinaryenExpressionRef BinaryenI31NewGetValue(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<I31New>()); + return static_cast<I31New*>(expression)->value; +} +void BinaryenI31NewSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<I31New>()); + assert(valueExpr); + static_cast<I31New*>(expression)->value = (Expression*)valueExpr; +} +// I31Get +BinaryenExpressionRef BinaryenI31GetGetI31(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<I31Get>()); + return static_cast<I31Get*>(expression)->i31; +} +void BinaryenI31GetSetI31(BinaryenExpressionRef expr, + BinaryenExpressionRef i31Expr) { + auto* expression = (Expression*)expr; + assert(expression->is<I31Get>()); + assert(i31Expr); + static_cast<I31Get*>(expression)->i31 = (Expression*)i31Expr; +} +int BinaryenI31GetIsSigned(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<I31Get>()); + return static_cast<I31Get*>(expression)->signed_; +} +void BinaryenI31GetSetSigned(BinaryenExpressionRef expr, int signed_) { + auto* expression = (Expression*)expr; + assert(expression->is<I31Get>()); + static_cast<I31Get*>(expression)->signed_ = signed_ != 0; +} // Functions |