diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 272 | ||||
-rw-r--r-- | src/binaryen-c.h | 157 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 67 |
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(() => |