summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp34
-rw-r--r--src/binaryen-c.h13
-rw-r--r--src/js/binaryen.js-post.js5
3 files changed, 45 insertions, 7 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 9bbcbaf9e..113b2faa9 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -1023,6 +1023,9 @@ BinaryenOp BinaryenStringNewUTF8Array(void) { return StringNewUTF8Array; }
BinaryenOp BinaryenStringNewWTF8Array(void) { return StringNewWTF8Array; }
BinaryenOp BinaryenStringNewReplaceArray(void) { return StringNewReplaceArray; }
BinaryenOp BinaryenStringNewWTF16Array(void) { return StringNewWTF16Array; }
+BinaryenOp BinaryenStringNewFromCodePoint(void) {
+ return StringNewFromCodePoint;
+}
BinaryenOp BinaryenStringMeasureUTF8(void) { return StringMeasureUTF8; }
BinaryenOp BinaryenStringMeasureWTF8(void) { return StringMeasureWTF8; }
BinaryenOp BinaryenStringMeasureWTF16(void) { return StringMeasureWTF16; }
@@ -1045,6 +1048,8 @@ BinaryenOp BinaryenStringIterMoveAdvance(void) { return StringIterMoveAdvance; }
BinaryenOp BinaryenStringIterMoveRewind(void) { return StringIterMoveRewind; }
BinaryenOp BinaryenStringSliceWTF8(void) { return StringSliceWTF8; }
BinaryenOp BinaryenStringSliceWTF16(void) { return StringSliceWTF16; }
+BinaryenOp BinaryenStringEqEqual(void) { return StringEqEqual; }
+BinaryenOp BinaryenStringEqCompare(void) { return StringEqCompare; }
BinaryenExpressionRef BinaryenBlock(BinaryenModuleRef module,
const char* name,
@@ -1835,10 +1840,8 @@ BinaryenExpressionRef BinaryenStringNew(BinaryenModuleRef module,
BinaryenExpressionRef ptr,
BinaryenExpressionRef length,
BinaryenExpressionRef start,
- BinaryenExpressionRef end) {
- // TODO: add API support for this
- bool try_ = false;
-
+ BinaryenExpressionRef end,
+ bool try_) {
Builder builder(*(Module*)module);
return static_cast<Expression*>(
length ? builder.makeStringNew(
@@ -1880,11 +1883,12 @@ BinaryenExpressionRef BinaryenStringConcat(BinaryenModuleRef module,
.makeStringConcat((Expression*)left, (Expression*)right));
}
BinaryenExpressionRef BinaryenStringEq(BinaryenModuleRef module,
+ BinaryenOp op,
BinaryenExpressionRef left,
BinaryenExpressionRef right) {
return static_cast<Expression*>(
Builder(*(Module*)module)
- .makeStringEq(StringEqEqual, (Expression*)left, (Expression*)right));
+ .makeStringEq(StringEqOp(op), (Expression*)left, (Expression*)right));
}
BinaryenExpressionRef BinaryenStringAs(BinaryenModuleRef module,
BinaryenOp op,
@@ -4506,6 +4510,16 @@ void BinaryenStringNewSetEnd(BinaryenExpressionRef expr,
// may be null (GC only)
static_cast<StringNew*>(expression)->end = (Expression*)endExpr;
}
+void BinaryenStringNewSetTry(BinaryenExpressionRef expr, bool try_) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<StringNew>());
+ static_cast<StringNew*>(expression)->try_ = try_;
+}
+bool BinaryenStringNewIsTry(BinaryenExpressionRef expr) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<StringNew>());
+ return static_cast<StringNew*>(expression)->try_;
+}
// StringConst
const char* BinaryenStringConstGetString(BinaryenExpressionRef expr) {
auto* expression = (Expression*)expr;
@@ -4615,6 +4629,16 @@ void BinaryenStringConcatSetRight(BinaryenExpressionRef expr,
static_cast<StringConcat*>(expression)->right = (Expression*)rightExpr;
}
// StringEq
+BinaryenOp BinaryenStringEqGetOp(BinaryenExpressionRef expr) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<StringEq>());
+ return static_cast<StringEq*>(expression)->op;
+}
+void BinaryenStringEqSetOp(BinaryenExpressionRef expr, BinaryenOp op) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<StringEq>());
+ static_cast<StringEq*>(expression)->op = StringEqOp(op);
+}
BinaryenExpressionRef BinaryenStringEqGetLeft(BinaryenExpressionRef expr) {
auto* expression = (Expression*)expr;
assert(expression->is<StringEq>());
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index cd5bd6735..32e3af460 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -685,6 +685,7 @@ BINARYEN_API BinaryenOp BinaryenStringNewUTF8Array(void);
BINARYEN_API BinaryenOp BinaryenStringNewWTF8Array(void);
BINARYEN_API BinaryenOp BinaryenStringNewReplaceArray(void);
BINARYEN_API BinaryenOp BinaryenStringNewWTF16Array(void);
+BINARYEN_API BinaryenOp BinaryenStringNewFromCodePoint(void);
BINARYEN_API BinaryenOp BinaryenStringMeasureUTF8(void);
BINARYEN_API BinaryenOp BinaryenStringMeasureWTF8(void);
BINARYEN_API BinaryenOp BinaryenStringMeasureWTF16(void);
@@ -703,6 +704,8 @@ BINARYEN_API BinaryenOp BinaryenStringIterMoveAdvance(void);
BINARYEN_API BinaryenOp BinaryenStringIterMoveRewind(void);
BINARYEN_API BinaryenOp BinaryenStringSliceWTF8(void);
BINARYEN_API BinaryenOp BinaryenStringSliceWTF16(void);
+BINARYEN_API BinaryenOp BinaryenStringEqEqual(void);
+BINARYEN_API BinaryenOp BinaryenStringEqCompare(void);
BINARYEN_REF(Expression);
@@ -1087,7 +1090,8 @@ BinaryenStringNew(BinaryenModuleRef module,
BinaryenExpressionRef ptr,
BinaryenExpressionRef length,
BinaryenExpressionRef start,
- BinaryenExpressionRef end);
+ BinaryenExpressionRef end,
+ bool try_);
BINARYEN_API BinaryenExpressionRef BinaryenStringConst(BinaryenModuleRef module,
const char* name);
BINARYEN_API BinaryenExpressionRef BinaryenStringMeasure(
@@ -1104,6 +1108,7 @@ BinaryenStringConcat(BinaryenModuleRef module,
BinaryenExpressionRef right);
BINARYEN_API BinaryenExpressionRef
BinaryenStringEq(BinaryenModuleRef module,
+ BinaryenOp op,
BinaryenExpressionRef left,
BinaryenExpressionRef right);
BINARYEN_API BinaryenExpressionRef BinaryenStringAs(BinaryenModuleRef module,
@@ -2529,6 +2534,9 @@ BINARYEN_API BinaryenExpressionRef
BinaryenStringNewGetEnd(BinaryenExpressionRef expr);
BINARYEN_API void BinaryenStringNewSetEnd(BinaryenExpressionRef expr,
BinaryenExpressionRef endExpr);
+BINARYEN_API void BinaryenStringNewSetTry(BinaryenExpressionRef expr,
+ bool try_);
+BINARYEN_API bool BinaryenStringNewIsTry(BinaryenExpressionRef expr);
// StringConst
@@ -2578,6 +2586,9 @@ BINARYEN_API void BinaryenStringConcatSetRight(BinaryenExpressionRef expr,
// StringEq
+BINARYEN_API BinaryenOp BinaryenStringEqGetOp(BinaryenExpressionRef expr);
+BINARYEN_API void BinaryenStringEqSetOp(BinaryenExpressionRef expr,
+ BinaryenOp op);
BINARYEN_API BinaryenExpressionRef
BinaryenStringEqGetLeft(BinaryenExpressionRef expr);
BINARYEN_API void BinaryenStringEqSetLeft(BinaryenExpressionRef expr,
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 49a8d2b69..5bd5e5505 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -564,6 +564,7 @@ function initializeConstants() {
'StringNewWTF8Array',
'StringNewReplaceArray',
'StringNewWTF16Array',
+ 'StringNewFromCodePoint',
'StringMeasureUTF8',
'StringMeasureWTF8',
'StringMeasureWTF16',
@@ -581,7 +582,9 @@ function initializeConstants() {
'StringIterMoveAdvance',
'StringIterMoveRewind',
'StringSliceWTF8',
- 'StringSliceWTF16'
+ 'StringSliceWTF16',
+ 'StringEqEqual',
+ 'StringEqCompare'
].forEach(name => {
Module['Operations'][name] = Module[name] = Module['_Binaryen' + name]();
});