summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp272
-rw-r--r--src/binaryen-c.h157
-rw-r--r--src/js/binaryen.js-post.js67
3 files changed, 471 insertions, 25 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index c6dd1c58b..c96411ae0 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -896,10 +896,52 @@ BinaryenOp BinaryenRefIsNull(void) { return RefIsNull; }
BinaryenOp BinaryenRefIsFunc(void) { return RefIsFunc; }
BinaryenOp BinaryenRefIsData(void) { return RefIsData; }
BinaryenOp BinaryenRefIsI31(void) { return RefIsI31; }
-BinaryenOp BinaryenRefAsNonNull(void) { return RefAsNonNull; };
+BinaryenOp BinaryenRefAsNonNull(void) { return RefAsNonNull; }
BinaryenOp BinaryenRefAsFunc(void) { return RefAsFunc; }
-BinaryenOp BinaryenRefAsData(void) { return RefAsData; };
-BinaryenOp BinaryenRefAsI31(void) { return RefAsI31; };
+BinaryenOp BinaryenRefAsData(void) { return RefAsData; }
+BinaryenOp BinaryenRefAsI31(void) { return RefAsI31; }
+BinaryenOp BinaryenRefAsExternInternalize(void) { return ExternInternalize; }
+BinaryenOp BinaryenRefAsExternExternalize(void) { return ExternExternalize; }
+BinaryenOp BinaryenBrOnNull(void) { return BrOnNull; }
+BinaryenOp BinaryenBrOnNonNull(void) { return BrOnNonNull; }
+BinaryenOp BinaryenBrOnCast(void) { return BrOnCast; }
+BinaryenOp BinaryenBrOnCastFail(void) { return BrOnCastFail; };
+BinaryenOp BinaryenBrOnFunc(void) { return BrOnFunc; }
+BinaryenOp BinaryenBrOnNonFunc(void) { return BrOnNonFunc; }
+BinaryenOp BinaryenBrOnData(void) { return BrOnData; }
+BinaryenOp BinaryenBrOnNonData(void) { return BrOnNonData; }
+BinaryenOp BinaryenBrOnI31(void) { return BrOnI31; }
+BinaryenOp BinaryenBrOnNonI31(void) { return BrOnNonI31; }
+BinaryenOp BinaryenStringNewUTF8(void) { return StringNewUTF8; }
+BinaryenOp BinaryenStringNewWTF8(void) { return StringNewWTF8; }
+BinaryenOp BinaryenStringNewReplace(void) { return StringNewReplace; }
+BinaryenOp BinaryenStringNewWTF16(void) { return StringNewWTF16; }
+BinaryenOp BinaryenStringNewUTF8Array(void) { return StringNewUTF8Array; }
+BinaryenOp BinaryenStringNewWTF8Array(void) { return StringNewWTF8Array; }
+BinaryenOp BinaryenStringNewReplaceArray(void) { return StringNewReplaceArray; }
+BinaryenOp BinaryenStringNewWTF16Array(void) { return StringNewWTF16Array; }
+BinaryenOp BinaryenStringMeasureUTF8(void) { return StringMeasureUTF8; }
+BinaryenOp BinaryenStringMeasureWTF8(void) { return StringMeasureWTF8; }
+BinaryenOp BinaryenStringMeasureWTF16(void) { return StringMeasureWTF16; }
+BinaryenOp BinaryenStringMeasureIsUSV(void) { return StringMeasureIsUSV; }
+BinaryenOp BinaryenStringMeasureWTF16View(void) {
+ return StringMeasureWTF16View;
+}
+BinaryenOp BinaryenStringEncodeUTF8(void) { return StringEncodeUTF8; }
+BinaryenOp BinaryenStringEncodeWTF8(void) { return StringEncodeWTF8; }
+BinaryenOp BinaryenStringEncodeWTF16(void) { return StringEncodeWTF16; }
+BinaryenOp BinaryenStringEncodeUTF8Array(void) { return StringEncodeUTF8Array; }
+BinaryenOp BinaryenStringEncodeWTF8Array(void) { return StringEncodeWTF8Array; }
+BinaryenOp BinaryenStringEncodeWTF16Array(void) {
+ return StringEncodeWTF16Array;
+}
+BinaryenOp BinaryenStringAsWTF8(void) { return StringAsWTF8; }
+BinaryenOp BinaryenStringAsWTF16(void) { return StringAsWTF16; }
+BinaryenOp BinaryenStringAsIter(void) { return StringAsIter; }
+BinaryenOp BinaryenStringIterMoveAdvance(void) { return StringIterMoveAdvance; }
+BinaryenOp BinaryenStringIterMoveRewind(void) { return StringIterMoveRewind; }
+BinaryenOp BinaryenStringSliceWTF8(void) { return StringSliceWTF8; }
+BinaryenOp BinaryenStringSliceWTF16(void) { return StringSliceWTF16; }
BinaryenExpressionRef BinaryenBlock(BinaryenModuleRef module,
const char* name,
@@ -1567,17 +1609,219 @@ BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module,
return static_cast<Expression*>(
Builder(*(Module*)module).makeI31Get((Expression*)i31, signed_ != 0));
}
-
-// TODO (gc): ref.test
-// TODO (gc): ref.cast
-// TODO (gc): br_on_cast
-// TODO (gc): struct.new
-// TODO (gc): struct.get
-// TODO (gc): struct.set
-// TODO (gc): array.new
-// TODO (gc): array.get
-// TODO (gc): array.set
-// TODO (gc): array.len
+BinaryenExpressionRef BinaryenRefTest(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenHeapType intendedType) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeRefTest((Expression*)ref, HeapType(intendedType)));
+}
+BinaryenExpressionRef BinaryenRefCast(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenHeapType intendedType) {
+ return static_cast<Expression*>(Builder(*(Module*)module)
+ .makeRefCast((Expression*)ref,
+ HeapType(intendedType),
+ RefCast::Safety::Safe));
+}
+BinaryenExpressionRef BinaryenBrOn(BinaryenModuleRef module,
+ BinaryenOp op,
+ const char* name,
+ BinaryenExpressionRef ref,
+ BinaryenHeapType intendedType) {
+ Builder builder(*(Module*)module);
+ return static_cast<Expression*>(
+ intendedType ? builder.makeBrOn(
+ BrOnOp(op), name, (Expression*)ref, HeapType(intendedType))
+ : builder.makeBrOn(BrOnOp(op), name, (Expression*)ref));
+}
+BinaryenExpressionRef BinaryenStructNew(BinaryenModuleRef module,
+ BinaryenExpressionRef* operands,
+ BinaryenIndex numOperands,
+ BinaryenHeapType type) {
+ std::vector<Expression*> args;
+ for (BinaryenIndex i = 0; i < numOperands; i++) {
+ args.push_back((Expression*)operands[i]);
+ }
+ return static_cast<Expression*>(
+ Builder(*(Module*)module).makeStructNew(HeapType(type), args));
+}
+BinaryenExpressionRef BinaryenStructGet(BinaryenModuleRef module,
+ BinaryenIndex index,
+ BinaryenExpressionRef ref,
+ BinaryenType type,
+ bool signed_) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeStructGet(index, (Expression*)ref, Type(type), signed_));
+}
+BinaryenExpressionRef BinaryenStructSet(BinaryenModuleRef module,
+ BinaryenIndex index,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef value) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeStructSet(index, (Expression*)ref, (Expression*)value));
+}
+BinaryenExpressionRef BinaryenArrayNew(BinaryenModuleRef module,
+ BinaryenHeapType type,
+ BinaryenExpressionRef size,
+ BinaryenExpressionRef init) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeArrayNew(HeapType(type), (Expression*)size, (Expression*)init));
+}
+BinaryenExpressionRef BinaryenArrayInit(BinaryenModuleRef module,
+ BinaryenHeapType type,
+ BinaryenExpressionRef* values,
+ BinaryenIndex numValues) {
+ std::vector<Expression*> vals;
+ for (BinaryenIndex i = 0; i < numValues; i++) {
+ vals.push_back((Expression*)values[i]);
+ }
+ return static_cast<Expression*>(
+ Builder(*(Module*)module).makeArrayInit(HeapType(type), vals));
+}
+BinaryenExpressionRef BinaryenArrayGet(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef index,
+ bool signed_) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeArrayGet((Expression*)ref, (Expression*)index, signed_));
+}
+BinaryenExpressionRef BinaryenArraySet(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef index,
+ BinaryenExpressionRef value) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeArraySet((Expression*)ref, (Expression*)index, (Expression*)value));
+}
+BinaryenExpressionRef BinaryenArrayLen(BinaryenModuleRef module,
+ BinaryenExpressionRef ref) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module).makeArrayLen((Expression*)ref));
+}
+BinaryenExpressionRef BinaryenArrayCopy(BinaryenModuleRef module,
+ BinaryenExpressionRef destRef,
+ BinaryenExpressionRef destIndex,
+ BinaryenExpressionRef srcRef,
+ BinaryenExpressionRef srcIndex,
+ BinaryenExpressionRef length) {
+ return static_cast<Expression*>(Builder(*(Module*)module)
+ .makeArrayCopy((Expression*)destRef,
+ (Expression*)destIndex,
+ (Expression*)srcRef,
+ (Expression*)srcIndex,
+ (Expression*)length));
+}
+BinaryenExpressionRef BinaryenStringNew(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef length,
+ BinaryenExpressionRef start,
+ BinaryenExpressionRef end) {
+ Builder builder(*(Module*)module);
+ return static_cast<Expression*>(
+ length ? builder.makeStringNew(
+ StringNewOp(op), (Expression*)ptr, (Expression*)length)
+ : builder.makeStringNew(StringNewOp(op),
+ (Expression*)ptr,
+ (Expression*)start,
+ (Expression*)end));
+}
+BinaryenExpressionRef BinaryenStringConst(BinaryenModuleRef module,
+ const char* name) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module).makeStringConst(name));
+}
+BinaryenExpressionRef BinaryenStringMeasure(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeStringMeasure(StringMeasureOp(op), (Expression*)ref));
+}
+BinaryenExpressionRef BinaryenStringEncode(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef start) {
+ return static_cast<Expression*>(Builder(*(Module*)module)
+ .makeStringEncode(StringEncodeOp(op),
+ (Expression*)ref,
+ (Expression*)ptr,
+ (Expression*)start));
+}
+BinaryenExpressionRef BinaryenStringConcat(BinaryenModuleRef module,
+ BinaryenExpressionRef left,
+ BinaryenExpressionRef right) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeStringConcat((Expression*)left, (Expression*)right));
+}
+BinaryenExpressionRef BinaryenStringEq(BinaryenModuleRef module,
+ BinaryenExpressionRef left,
+ BinaryenExpressionRef right) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeStringEq((Expression*)left, (Expression*)right));
+}
+BinaryenExpressionRef BinaryenStringAs(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module).makeStringAs(StringAsOp(op), (Expression*)ref));
+}
+BinaryenExpressionRef BinaryenStringWTF8Advance(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef pos,
+ BinaryenExpressionRef bytes) {
+ return static_cast<Expression*>(Builder(*(Module*)module)
+ .makeStringWTF8Advance((Expression*)ref,
+ (Expression*)pos,
+ (Expression*)bytes));
+}
+BinaryenExpressionRef BinaryenStringWTF16Get(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef pos) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeStringWTF16Get((Expression*)ref, (Expression*)pos));
+}
+BinaryenExpressionRef BinaryenStringIterNext(BinaryenModuleRef module,
+ BinaryenExpressionRef ref) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module).makeStringIterNext((Expression*)ref));
+}
+BinaryenExpressionRef BinaryenStringIterMove(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef num) {
+ return static_cast<Expression*>(Builder(*(Module*)module)
+ .makeStringIterMove(StringIterMoveOp(op),
+ (Expression*)ref,
+ (Expression*)num));
+}
+BinaryenExpressionRef BinaryenStringSliceWTF(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef start,
+ BinaryenExpressionRef end) {
+ return static_cast<Expression*>(Builder(*(Module*)module)
+ .makeStringSliceWTF(StringSliceWTFOp(op),
+ (Expression*)ref,
+ (Expression*)start,
+ (Expression*)end));
+}
+BinaryenExpressionRef BinaryenStringSliceIter(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef num) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module)
+ .makeStringSliceIter((Expression*)ref, (Expression*)num));
+}
// Expression utility
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 32ffea453..f3e305d03 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -644,6 +644,44 @@ BINARYEN_API BinaryenOp BinaryenRefAsNonNull(void);
BINARYEN_API BinaryenOp BinaryenRefAsFunc(void);
BINARYEN_API BinaryenOp BinaryenRefAsData(void);
BINARYEN_API BinaryenOp BinaryenRefAsI31(void);
+BINARYEN_API BinaryenOp BinaryenRefAsExternInternalize(void);
+BINARYEN_API BinaryenOp BinaryenRefAsExternExternalize(void);
+BINARYEN_API BinaryenOp BinaryenBrOnNull(void);
+BINARYEN_API BinaryenOp BinaryenBrOnNonNull(void);
+BINARYEN_API BinaryenOp BinaryenBrOnCast(void);
+BINARYEN_API BinaryenOp BinaryenBrOnCastFail(void);
+BINARYEN_API BinaryenOp BinaryenBrOnFunc(void);
+BINARYEN_API BinaryenOp BinaryenBrOnNonFunc(void);
+BINARYEN_API BinaryenOp BinaryenBrOnData(void);
+BINARYEN_API BinaryenOp BinaryenBrOnNonData(void);
+BINARYEN_API BinaryenOp BinaryenBrOnI31(void);
+BINARYEN_API BinaryenOp BinaryenBrOnNonI31(void);
+BINARYEN_API BinaryenOp BinaryenStringNewUTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringNewWTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringNewReplace(void);
+BINARYEN_API BinaryenOp BinaryenStringNewWTF16(void);
+BINARYEN_API BinaryenOp BinaryenStringNewUTF8Array(void);
+BINARYEN_API BinaryenOp BinaryenStringNewWTF8Array(void);
+BINARYEN_API BinaryenOp BinaryenStringNewReplaceArray(void);
+BINARYEN_API BinaryenOp BinaryenStringNewWTF16Array(void);
+BINARYEN_API BinaryenOp BinaryenStringMeasureUTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringMeasureWTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringMeasureWTF16(void);
+BINARYEN_API BinaryenOp BinaryenStringMeasureIsUSV(void);
+BINARYEN_API BinaryenOp BinaryenStringMeasureWTF16View(void);
+BINARYEN_API BinaryenOp BinaryenStringEncodeUTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringEncodeWTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringEncodeWTF16(void);
+BINARYEN_API BinaryenOp BinaryenStringEncodeUTF8Array(void);
+BINARYEN_API BinaryenOp BinaryenStringEncodeWTF8Array(void);
+BINARYEN_API BinaryenOp BinaryenStringEncodeWTF16Array(void);
+BINARYEN_API BinaryenOp BinaryenStringAsWTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringAsWTF16(void);
+BINARYEN_API BinaryenOp BinaryenStringAsIter(void);
+BINARYEN_API BinaryenOp BinaryenStringIterMoveAdvance(void);
+BINARYEN_API BinaryenOp BinaryenStringIterMoveRewind(void);
+BINARYEN_API BinaryenOp BinaryenStringSliceWTF8(void);
+BINARYEN_API BinaryenOp BinaryenStringSliceWTF16(void);
BINARYEN_REF(Expression);
@@ -959,16 +997,115 @@ BINARYEN_API BinaryenExpressionRef BinaryenI31New(BinaryenModuleRef module,
BINARYEN_API BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module,
BinaryenExpressionRef i31,
bool signed_);
-// TODO (gc): ref.test
-// TODO (gc): ref.cast
-// TODO (gc): br_on_cast
-// TODO (gc): struct.new
-// TODO (gc): struct.get
-// TODO (gc): struct.set
-// TODO (gc): array.new
-// TODO (gc): array.get
-// TODO (gc): array.set
-// TODO (gc): array.len
+BINARYEN_API BinaryenExpressionRef
+BinaryenRefTest(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenHeapType intendedType);
+BINARYEN_API BinaryenExpressionRef
+BinaryenRefCast(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenHeapType intendedType);
+BINARYEN_API BinaryenExpressionRef BinaryenBrOn(BinaryenModuleRef module,
+ BinaryenOp op,
+ const char* name,
+ BinaryenExpressionRef ref,
+ BinaryenHeapType intendedType);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStructNew(BinaryenModuleRef module,
+ BinaryenExpressionRef* operands,
+ BinaryenIndex numOperands,
+ BinaryenHeapType type);
+BINARYEN_API BinaryenExpressionRef BinaryenStructGet(BinaryenModuleRef module,
+ BinaryenIndex index,
+ BinaryenExpressionRef ref,
+ BinaryenType type,
+ bool signed_);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStructSet(BinaryenModuleRef module,
+ BinaryenIndex index,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenArrayNew(BinaryenModuleRef module,
+ BinaryenHeapType type,
+ BinaryenExpressionRef size,
+ BinaryenExpressionRef init);
+BINARYEN_API BinaryenExpressionRef
+BinaryenArrayInit(BinaryenModuleRef module,
+ BinaryenHeapType type,
+ BinaryenExpressionRef* values,
+ BinaryenIndex numValues);
+BINARYEN_API BinaryenExpressionRef BinaryenArrayGet(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef index,
+ bool signed_);
+BINARYEN_API BinaryenExpressionRef
+BinaryenArraySet(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef index,
+ BinaryenExpressionRef value);
+BINARYEN_API BinaryenExpressionRef BinaryenArrayLen(BinaryenModuleRef module,
+ BinaryenExpressionRef ref);
+BINARYEN_API BinaryenExpressionRef
+BinaryenArrayCopy(BinaryenModuleRef module,
+ BinaryenExpressionRef destRef,
+ BinaryenExpressionRef destIndex,
+ BinaryenExpressionRef srcRef,
+ BinaryenExpressionRef srcIndex,
+ BinaryenExpressionRef length);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringNew(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef length,
+ BinaryenExpressionRef start,
+ BinaryenExpressionRef end);
+BINARYEN_API BinaryenExpressionRef BinaryenStringConst(BinaryenModuleRef module,
+ const char* name);
+BINARYEN_API BinaryenExpressionRef BinaryenStringMeasure(
+ BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef ref);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringEncode(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef ptr,
+ BinaryenExpressionRef start);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringConcat(BinaryenModuleRef module,
+ BinaryenExpressionRef left,
+ BinaryenExpressionRef right);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringEq(BinaryenModuleRef module,
+ BinaryenExpressionRef left,
+ BinaryenExpressionRef right);
+BINARYEN_API BinaryenExpressionRef BinaryenStringAs(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringWTF8Advance(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef pos,
+ BinaryenExpressionRef bytes);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringWTF16Get(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef pos);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringIterNext(BinaryenModuleRef module, BinaryenExpressionRef ref);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringIterMove(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef num);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringSliceWTF(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef start,
+ BinaryenExpressionRef end);
+BINARYEN_API BinaryenExpressionRef
+BinaryenStringSliceIter(BinaryenModuleRef module,
+ BinaryenExpressionRef ref,
+ BinaryenExpressionRef num);
// Expression
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index c684553a5..f9e4d0d44 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -118,7 +118,22 @@ function initializeConstants() {
'ArrayInit',
'ArrayGet',
'ArraySet',
- 'ArrayLen'
+ 'ArrayLen',
+ 'ArrayCopy',
+ 'RefAs',
+ 'StringNew',
+ 'StringConst',
+ 'StringMeasure',
+ 'StringEncode',
+ 'StringConcat',
+ 'StringEq',
+ 'StringAs',
+ 'StringWTF8Advance',
+ 'StringWTF16Get',
+ 'StringIterNext',
+ 'StringIterMove',
+ 'StringSliceWTF',
+ 'StringSliceIter'
].forEach(name => {
Module['ExpressionIds'][name] = Module[name + 'Id'] = Module['_Binaryen' + name + 'Id']();
});
@@ -542,6 +557,44 @@ function initializeConstants() {
'RefAsFunc',
'RefAsData',
'RefAsI31',
+ 'RefAsExternInternalize',
+ 'RefAsExternExternalize',
+ 'BrOnNull',
+ 'BrOnNonNull',
+ 'BrOnCast',
+ 'BrOnCastFail',
+ 'BrOnFunc',
+ 'BrOnNonFunc',
+ 'BrOnData',
+ 'BrOnNonData',
+ 'BrOnI31',
+ 'BrOnNonI31',
+ 'StringNewUTF8',
+ 'StringNewWTF8',
+ 'StringNewReplace',
+ 'StringNewWTF16',
+ 'StringNewUTF8Array',
+ 'StringNewWTF8Array',
+ 'StringNewReplaceArray',
+ 'StringNewWTF16Array',
+ 'StringMeasureUTF8',
+ 'StringMeasureWTF8',
+ 'StringMeasureWTF16',
+ 'StringMeasureIsUSV',
+ 'StringMeasureWTF16View',
+ 'StringEncodeUTF8',
+ 'StringEncodeWTF8',
+ 'StringEncodeWTF16',
+ 'StringEncodeUTF8Array',
+ 'StringEncodeWTF8Array',
+ 'StringEncodeWTF16Array',
+ 'StringAsWTF8',
+ 'StringAsWTF16',
+ 'StringAsIter',
+ 'StringIterMoveAdvance',
+ 'StringIterMoveRewind',
+ 'StringSliceWTF8',
+ 'StringSliceWTF16'
].forEach(name => {
Module['Operations'][name] = Module[name] = Module['_Binaryen' + name]();
});
@@ -2382,6 +2435,18 @@ function wrapModule(module, self = {}) {
}
};
+ // TODO: extern.internalize
+ // TODO: extern.externalize
+ // TODO: ref.test
+ // TODO: ref.cast
+ // TODO: br_on_*
+ // TODO: struct.*
+ // TODO: array.*
+ // TODO: string.*
+ // TODO: stringview_wtf8.*
+ // TODO: stringview_wtf16.*
+ // TODO: stringview_iter.*
+
// 'Module' operations
self['addFunction'] = function(name, params, results, varTypes, body) {
return preserveStack(() =>