diff --git a/package-lock.json b/package-lock.json index 982752d20a..5a4c4eb0f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1180,9 +1180,9 @@ "dev": true }, "binaryen": { - "version": "94.0.0-nightly.20200716", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-94.0.0-nightly.20200716.tgz", - "integrity": "sha512-VvxpZQ2PI4G9EOU8uDmcBo1gd1UmxtWEnCCrxi8DzwBHxOGtFHeFH8Np3lT46HdZa1A7U42CBVHYbSlhY3cLCA==" + "version": "95.0.0-nightly.20200723", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-95.0.0-nightly.20200723.tgz", + "integrity": "sha512-IUO89yU4l20ocuf7RvcBj2T1ZGafO0XNcbqTFne9Dbp63FOLafDSuV7U22n0bTbK4H6qqGogTQtQJQbrV054lQ==" }, "bindings": { "version": "1.5.0", diff --git a/package.json b/package.json index fcd37a7bf1..748b3ffa7c 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "94.0.0-nightly.20200716", + "binaryen": "95.0.0-nightly.20200723", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" diff --git a/src/compiler.ts b/src/compiler.ts index 41ed1396bd..4966331552 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -39,7 +39,7 @@ import { getConstValueF32, getConstValueF64, getBlockChildCount, - getBlockChild, + getBlockChildAt, getBlockName, getLocalGetIndex, isLocalTee, @@ -2194,7 +2194,7 @@ export class Compiler extends DiagnosticEmitter { switch (getExpressionId(stmt)) { case ExpressionId.Block: { if (!getBlockName(stmt)) { - for (let j: Index = 0, k = getBlockChildCount(stmt); j < k; ++j) stmts.push(getBlockChild(stmt, j)); + for (let j: Index = 0, k = getBlockChildCount(stmt); j < k; ++j) stmts.push(getBlockChildAt(stmt, j)); break; } // fall-through @@ -7635,7 +7635,7 @@ export class Compiler extends DiagnosticEmitter { if (getBlockName(expr) === null) { // must not be a break target let count = getBlockChildCount(expr); if (count) { - return this.tryUndoAutorelease(getBlockChild(expr, count - 1), flow); + return this.tryUndoAutorelease(getBlockChildAt(expr, count - 1), flow); } } break; diff --git a/src/flow.ts b/src/flow.ts index b9706e81dc..94b21b82e6 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -56,7 +56,7 @@ import { isLoadSigned, getBlockName, getBlockChildCount, - getBlockChild, + getBlockChildAt, getIfTrue, getIfFalse, getSelectThen, @@ -66,7 +66,7 @@ import { getIfCondition, getConstValueI64High, getUnaryValue, - getCallOperand, + getCallOperandAt, traverse } from "./module"; @@ -1114,7 +1114,7 @@ export class Flow { let program = this.parentFunction.program; if (name == program.retainInstance.internalName) { // __retain just passes through the argument - this.inheritNonnullIfTrue(getCallOperand(expr, 0), iff); + this.inheritNonnullIfTrue(getCallOperandAt(expr, 0), iff); } break; } @@ -1423,7 +1423,7 @@ export class Flow { case ExpressionId.Block: { if (!getBlockName(expr)) { let size = assert(getBlockChildCount(expr)); - let last = getBlockChild(expr, size - 1); + let last = getBlockChildAt(expr, size - 1); return this.canOverflow(last, type); } break; diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 2c95e61339..5c70897850 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -24,8 +24,9 @@ export declare function __f32_load(ptr: usize): f32; export declare function __f64_load(ptr: usize): f64; type BinaryenIndex = u32; - type BinaryenType = usize; +type BinaryenString = usize; +type BinaryenArray = usize; export declare function _BinaryenTypeNone(): BinaryenType; export declare function _BinaryenTypeInt32(): BinaryenType; @@ -40,9 +41,9 @@ export declare function _BinaryenTypeExnref(): BinaryenType; export declare function _BinaryenTypeUnreachable(): BinaryenType; export declare function _BinaryenTypeAuto(): BinaryenType; -export declare function _BinaryenTypeCreate(buf: usize, count: u32): BinaryenType; +export declare function _BinaryenTypeCreate(types: BinaryenArray, numTypes: u32): BinaryenType; export declare function _BinaryenTypeArity(type: BinaryenType): u32; -export declare function _BinaryenTypeExpand(type: BinaryenType, buf: usize): void; +export declare function _BinaryenTypeExpand(type: BinaryenType, typesOut: BinaryenArray): void; type BinaryenFeatureFlags = u32; @@ -115,16 +116,16 @@ type BinaryenModuleRef = usize; export declare function _BinaryenModuleCreate(): BinaryenModuleRef; export declare function _BinaryenModuleDispose(module: BinaryenModuleRef): void; -// LLVM C ABI with `out` being a large enough buffer receiving the -// BinaryenLiteral struct of size `_BinaryenSizeofLiteral()`. +type BinaryenLiteral = usize; + export declare function _BinaryenSizeofLiteral(): usize; -export declare function _BinaryenLiteralInt32(out: usize, x: i32): void; -export declare function _BinaryenLiteralInt64(out: usize, x: i32, y: i32): void; -export declare function _BinaryenLiteralFloat32(out: usize, x: f32): void; -export declare function _BinaryenLiteralFloat64(out: usize, x: f64): void; -export declare function _BinaryenLiteralVec128(out: usize, xPtr: usize): void; -export declare function _BinaryenLiteralFloat32Bits(out: usize, x: i32): void; -export declare function _BinaryenLiteralFloat64Bits(out: usize, x: i32, y: i32): void; +export declare function _BinaryenLiteralInt32(literalOut: BinaryenLiteral, x: i32): void; +export declare function _BinaryenLiteralInt64(literalOut: BinaryenLiteral, x: i32, y: i32): void; +export declare function _BinaryenLiteralFloat32(literalOut: BinaryenLiteral, x: f32): void; +export declare function _BinaryenLiteralFloat64(literalOut: BinaryenLiteral, x: f64): void; +export declare function _BinaryenLiteralVec128(literalOut: BinaryenLiteral, x: BinaryenArray): void; +export declare function _BinaryenLiteralFloat32Bits(literalOut: BinaryenLiteral, x: i32): void; +export declare function _BinaryenLiteralFloat64Bits(literalOut: BinaryenLiteral, x: i32, y: i32): void; type BinaryenOp = i32; @@ -463,321 +464,472 @@ export declare function _BinaryenSwizzleVec8x16(): BinaryenOp; type BinaryenExpressionRef = usize; -export declare function _BinaryenBlock(module: BinaryenModuleRef, name: usize, children: usize, numChildren: BinaryenIndex, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenIf(module: BinaryenModuleRef, condition: BinaryenExpressionRef, ifTrue: BinaryenExpressionRef, ifFalse: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenLoop(module: BinaryenModuleRef, name: usize, body: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenBreak(module: BinaryenModuleRef, name: usize, condition: BinaryenExpressionRef, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSwitch(module: BinaryenModuleRef, names: usize, numNames: BinaryenIndex, defaultName: usize, condition: BinaryenExpressionRef, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenCall(module: BinaryenModuleRef, target: usize, operands: usize, numOperands: BinaryenIndex, returnType: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenReturnCall(module: BinaryenModuleRef, target: usize, operands: usize, numOperands: BinaryenIndex, returnType: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenCallIndirect(module: BinaryenModuleRef, target: BinaryenExpressionRef, operands: usize, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenReturnCallIndirect(module: BinaryenModuleRef, target: BinaryenExpressionRef, operands: usize, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenLocalGet(module: BinaryenModuleRef, index: BinaryenIndex, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenLocalSet(module: BinaryenModuleRef, index: BinaryenIndex, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenLocalTee(module: BinaryenModuleRef, index: BinaryenIndex, value: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenGlobalGet(module: BinaryenModuleRef, name: usize, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenGlobalSet(module: BinaryenModuleRef, name: usize, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenLoad(module: BinaryenModuleRef, bytes: u32, signed: i8, offset: u32, align: u32, type: BinaryenType, ptr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenStore(module: BinaryenModuleRef, bytes: u32, offset: u32, align: u32, ptr: BinaryenExpressionRef, value: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenConst(module: BinaryenModuleRef, value: usize): BinaryenExpressionRef; -export declare function _BinaryenUnary(module: BinaryenModuleRef, op: BinaryenOp, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenBinary(module: BinaryenModuleRef, op: BinaryenOp, left: BinaryenExpressionRef, right: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSelect(module: BinaryenModuleRef, condition: BinaryenExpressionRef, ifTrue: BinaryenExpressionRef, ifFalse: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenDrop(module: BinaryenModuleRef, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenReturn(module: BinaryenModuleRef, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenHost(module: BinaryenModuleRef, op: BinaryenOp, name: usize, operands: usize, numOperands: BinaryenIndex): BinaryenExpressionRef; -export declare function _BinaryenNop(module: BinaryenModuleRef): BinaryenExpressionRef; -export declare function _BinaryenUnreachable(module: BinaryenModuleRef): BinaryenExpressionRef; - -export declare function _BinaryenAtomicLoad(module: BinaryenModuleRef, bytes: BinaryenIndex, offset: BinaryenIndex, type: BinaryenType, ptr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenAtomicStore(module: BinaryenModuleRef, bytes: BinaryenIndex, offset: BinaryenIndex, ptr: BinaryenExpressionRef, value: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenAtomicRMW(module: BinaryenModuleRef, op: BinaryenOp, bytes: i32, offset: i32, ptr: BinaryenExpressionRef, value: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenAtomicCmpxchg(module: BinaryenModuleRef, bytes: i32, offset: i32, ptr: BinaryenExpressionRef, expected: BinaryenExpressionRef, replacement: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenAtomicWait(module: BinaryenModuleRef, ptr: BinaryenExpressionRef, expected: BinaryenExpressionRef, timeout: BinaryenExpressionRef, expectedType: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenAtomicNotify(module: BinaryenModuleRef, ptr: BinaryenExpressionRef, notifyCount: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenAtomicFence(module: BinaryenModuleRef): BinaryenExpressionRef; - -export declare function _BinaryenSIMDExtract(module: BinaryenModuleRef, op: BinaryenOp, vec: BinaryenExpressionRef, idx: u8): BinaryenExpressionRef; -export declare function _BinaryenSIMDReplace(module: BinaryenModuleRef, op: BinaryenOp, vec: BinaryenExpressionRef, idx: u8, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSIMDShuffle(module: BinaryenModuleRef, left: BinaryenExpressionRef, right: BinaryenExpressionRef, maskPtr: usize): BinaryenExpressionRef; -export declare function _BinaryenSIMDTernary(module: BinaryenModuleRef, op: BinaryenOp, a: BinaryenExpressionRef, b: BinaryenExpressionRef, c: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSIMDShift(module: BinaryenModuleRef, op: BinaryenOp, vec: BinaryenExpressionRef, shift: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSIMDLoad(module: BinaryenModuleRef, op: BinaryenOp, offset: u32, align: u32, ptr: BinaryenExportRef): BinaryenExpressionRef; - -export declare function _BinaryenMemoryInit(module: BinaryenModuleRef, segment: u32, dest: BinaryenExpressionRef, offset: BinaryenExpressionRef, size: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenDataDrop(module: BinaryenModuleRef, segment: u32): BinaryenExpressionRef; -export declare function _BinaryenMemoryCopy(module: BinaryenModuleRef, dest: BinaryenExpressionRef, source: BinaryenExpressionRef, size: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenMemoryFill(module: BinaryenModuleRef, dest: BinaryenExpressionRef, value: BinaryenExpressionRef, size: BinaryenExpressionRef): BinaryenExpressionRef; - -export declare function _BinaryenRefNull(module: BinaryenModuleRef): BinaryenExpressionRef; -export declare function _BinaryenRefIsNull(module: BinaryenModuleRef, value: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRefFunc(module: BinaryenModuleRef, funcName: usize): BinaryenExpressionRef; - -export declare function _BinaryenTry(module: BinaryenModuleRef, body: BinaryenExpressionRef, catchBody: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenThrow(module: BinaryenModuleRef, event: usize, operands: usize, numOperands: BinaryenIndex): BinaryenExpressionRef; -export declare function _BinaryenRethrow(module: BinaryenModuleRef, exnref: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenBrOnExn(module: BinaryenModuleRef, name: usize, eventName: usize, exnref: BinaryenExpressionRef): BinaryenExpressionRef; - -export declare function _BinaryenTupleMake(module: BinaryenModuleRef, operands: usize, numOperands: BinaryenIndex): BinaryenExpressionRef; -export declare function _BinaryenTupleMakeGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; -export declare function _BinaryenTupleMakeGetOperand(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; -export declare function _BinaryenTupleExtract(module: BinaryenModuleRef, tuple: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; -export declare function _BinaryenTupleExtractGetTuple(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenTupleExtractGetIndex(expr: BinaryenExpressionRef): BinaryenIndex; - -export declare function _BinaryenPop(module: BinaryenModuleRef, type: BinaryenType): BinaryenExpressionRef; - export declare function _BinaryenExpressionGetId(expr: BinaryenExpressionRef): BinaryenExpressionId; export declare function _BinaryenExpressionGetType(expr: BinaryenExpressionRef): BinaryenType; +export declare function _BinaryenExpressionSetType(expr: BinaryenExpressionRef, type: BinaryenType): void; export declare function _BinaryenExpressionPrint(expr: BinaryenExpressionRef): void; export declare function _BinaryenExpressionCopy(expr: BinaryenExpressionRef, module: BinaryenModuleRef): BinaryenExpressionRef; +export declare function _BinaryenExpressionFinalize(expr: BinaryenExpressionRef): void; -export declare function _BinaryenBlockGetName(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenBlock(module: BinaryenModuleRef, name: BinaryenString, childExprs: BinaryenArray, numChildren: BinaryenIndex, type: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenBlockGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenBlockSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; export declare function _BinaryenBlockGetNumChildren(expr: BinaryenExpressionRef): BinaryenIndex; -export declare function _BinaryenBlockGetChild(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenBlockGetChildAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenBlockSetChildAt(expr: BinaryenExpressionRef, index: BinaryenIndex, childExpr: BinaryenExpressionRef): void; +export declare function _BinaryenBlockAppendChild(expr: BinaryenExpressionRef, childExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenBlockInsertChildAt(expr: BinaryenExpressionRef, index: BinaryenIndex, childExpr: BinaryenExpressionRef): void; +export declare function _BinaryenBlockRemoveChildAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenIf(module: BinaryenModuleRef, conditionExpr: BinaryenExpressionRef, ifTrueExpr: BinaryenExpressionRef, ifFalseExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenIfGetCondition(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenIfSetCondition(expr: BinaryenExpressionRef, conditionExpr: BinaryenExpressionRef): void; export declare function _BinaryenIfGetIfTrue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenIfSetIfTrue(expr: BinaryenExpressionRef, ifTrueExpr: BinaryenExpressionRef): void; export declare function _BinaryenIfGetIfFalse(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenIfSetIfFalse(expr: BinaryenExpressionRef, ifFalseExpr: BinaryenExpressionRef): void; -export declare function _BinaryenLoopGetName(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenLoop(module: BinaryenModuleRef, name: BinaryenString, bodyExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenLoopGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenLoopSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; export declare function _BinaryenLoopGetBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenLoopSetBody(expr: BinaryenExpressionRef, bodyExpr: BinaryenExpressionRef): void; -export declare function _BinaryenBreakGetName(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenBreak(module: BinaryenModuleRef, name: BinaryenString, conditionExpr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenBreakGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenBreakSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; export declare function _BinaryenBreakGetCondition(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenBreakSetCondition(expr: BinaryenExpressionRef, conditionExpr: BinaryenExpressionRef): void; export declare function _BinaryenBreakGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenBreakSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSwitch(module: BinaryenModuleRef, names: BinaryenArray, numNames: BinaryenIndex, defaultName: BinaryenString, conditionExpr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenSwitchGetNumNames(expr: BinaryenExpressionRef): BinaryenIndex; -export declare function _BinaryenSwitchGetName(expr: BinaryenExpressionRef, index: BinaryenIndex): usize; -export declare function _BinaryenSwitchGetDefaultName(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenSwitchGetNameAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenString; +export declare function _BinaryenSwitchSetNameAt(expr: BinaryenExpressionRef, index: BinaryenIndex, name: BinaryenString): void; +export declare function _BinaryenSwitchAppendName(expr: BinaryenExpressionRef, name: BinaryenString): BinaryenIndex; +export declare function _BinaryenSwitchInsertNameAt(expr: BinaryenExpressionRef, index: BinaryenIndex, name: BinaryenString): void; +export declare function _BinaryenSwitchRemoveNameAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenString; +export declare function _BinaryenSwitchGetDefaultName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenSwitchSetDefaultName(expr: BinaryenExpressionRef, defaultName: BinaryenString): void; export declare function _BinaryenSwitchGetCondition(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSwitchSetCondition(expr: BinaryenExpressionRef, conditionExpr: BinaryenExpressionRef): void; export declare function _BinaryenSwitchGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSwitchSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; -export declare function _BinaryenCallGetTarget(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenCall(module: BinaryenModuleRef, targetName: BinaryenString, operandExprs: BinaryenArray, numOperands: BinaryenIndex, returnType: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenCallGetTarget(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenCallSetTarget(expr: BinaryenExpressionRef, targetName: BinaryenString): void; export declare function _BinaryenCallGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; -export declare function _BinaryenCallGetOperand(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; - +export declare function _BinaryenCallGetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenCallSetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenCallAppendOperand(expr: BinaryenExpressionRef, operandExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenCallInsertOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenCallRemoveOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenCallIsReturn(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenCallSetReturn(expr: BinaryenExpressionRef, isReturn: bool): void; +// ^ with return = true +export declare function _BinaryenReturnCall(module: BinaryenModuleRef, targetName: BinaryenString, operandExprs: BinaryenArray, numOperands: BinaryenIndex, returnType: BinaryenType): BinaryenExpressionRef; + +export declare function _BinaryenCallIndirect(module: BinaryenModuleRef, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenCallIndirectGetTarget(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenCallIndirectSetTarget(expr: BinaryenExpressionRef, targetExpr: BinaryenExpressionRef): void; export declare function _BinaryenCallIndirectGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; -export declare function _BinaryenCallIndirectGetOperand(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenCallIndirectGetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenCallIndirectSetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenCallIndirectAppendOperand(expr: BinaryenExpressionRef, operandExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenCallIndirectInsertOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenCallIndirectRemoveOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenCallIndirectIsReturn(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenCallIndirectSetReturn(expr: BinaryenExpressionRef, isReturn: bool): void; +// ^ with return = true +export declare function _BinaryenReturnCallIndirect(module: BinaryenModuleRef, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenLocalGet(module: BinaryenModuleRef, index: BinaryenIndex, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenLocalGetGetIndex(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenLocalGetSetIndex(expr: BinaryenExpressionRef, index: BinaryenIndex): void; +export declare function _BinaryenLocalSet(module: BinaryenModuleRef, index: BinaryenIndex, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenLocalSetIsTee(expr: BinaryenExpressionRef): bool; export declare function _BinaryenLocalSetGetIndex(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenLocalSetSetIndex(expr: BinaryenExpressionRef, index: BinaryenIndex): void; export declare function _BinaryenLocalSetGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenLocalSetSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +// ^ with type != none +export declare function _BinaryenLocalTee(module: BinaryenModuleRef, index: BinaryenIndex, valueExpr: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenGlobalGetGetName(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenGlobalGet(module: BinaryenModuleRef, name: BinaryenString, type: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenGlobalGetGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenGlobalGetSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; -export declare function _BinaryenGlobalSetGetName(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenGlobalSet(module: BinaryenModuleRef, name: BinaryenString, value: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenGlobalSetGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenGlobalSetSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; export declare function _BinaryenGlobalSetGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenGlobalSetSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenHost(module: BinaryenModuleRef, op: BinaryenOp, nameOperand: BinaryenString, operandExprs: BinaryenArray, numOperands: BinaryenIndex): BinaryenExpressionRef; export declare function _BinaryenHostGetOp(expr: BinaryenExpressionRef): BinaryenOp; -export declare function _BinaryenHostGetNameOperand(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenHostSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; +export declare function _BinaryenHostGetNameOperand(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenHostSetNameOperand(expr: BinaryenExpressionRef, nameOperand: BinaryenString): void; export declare function _BinaryenHostGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; -export declare function _BinaryenHostGetOperand(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenHostGetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenHostSetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenHostAppendOperand(expr: BinaryenExpressionRef, operandExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenHostInsertOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenHostRemoveOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenLoad(module: BinaryenModuleRef, bytes: u32, signed: bool, offset: u32, align: u32, type: BinaryenType, ptrExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenLoadIsAtomic(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenLoadSetAtomic(expr: BinaryenExpressionRef, isAtomic: bool): void; export declare function _BinaryenLoadIsSigned(expr: BinaryenExpressionRef): bool; -export declare function _BinaryenLoadGetBytes(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenLoadSetSigned(expr: BinaryenExpressionRef, isSigned: bool): void; export declare function _BinaryenLoadGetOffset(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenLoadSetOffset(expr: BinaryenExpressionRef, offset: u32): void; +export declare function _BinaryenLoadGetBytes(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenLoadSetBytes(expr: BinaryenExpressionRef, bytes: u32): void; export declare function _BinaryenLoadGetAlign(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenLoadSetAlign(expr: BinaryenExpressionRef, align: u32): void; export declare function _BinaryenLoadGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenLoadSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; +// ^ with atomic = true +export declare function _BinaryenAtomicLoad(module: BinaryenModuleRef, bytes: BinaryenIndex, offset: BinaryenIndex, type: BinaryenType, ptrExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenStore(module: BinaryenModuleRef, bytes: u32, offset: u32, align: u32, ptrExpr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenStoreIsAtomic(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenStoreSetAtomic(expr: BinaryenExpressionRef, isAtomic: bool): void; export declare function _BinaryenStoreGetBytes(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenStoreSetBytes(expr: BinaryenExpressionRef, bytes: u32): void; export declare function _BinaryenStoreGetOffset(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenStoreSetOffset(expr: BinaryenExpressionRef, offset: u32): void; export declare function _BinaryenStoreGetAlign(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenStoreSetAlign(expr: BinaryenExpressionRef, align: u32): void; export declare function _BinaryenStoreGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenStoreSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; export declare function _BinaryenStoreGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenStoreSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenStoreGetValueType(expr: BinaryenExpressionRef): BinaryenType; +export declare function _BinaryenStoreSetValueType(expr: BinaryenExpressionRef, valueType: BinaryenType): void; +// ^ with atomic = true +export declare function _BinaryenAtomicStore(module: BinaryenModuleRef, bytes: BinaryenIndex, offset: BinaryenIndex, ptrExpr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenConst(module: BinaryenModuleRef, value: BinaryenLiteral): BinaryenExpressionRef; export declare function _BinaryenConstGetValueI32(expr: BinaryenExpressionRef): i32; +export declare function _BinaryenConstSetValueI32(expr: BinaryenExpressionRef, value: i32): void; export declare function _BinaryenConstGetValueI64Low(expr: BinaryenExpressionRef): i32; +export declare function _BinaryenConstSetValueI64Low(expr: BinaryenExpressionRef, value: i32): void; export declare function _BinaryenConstGetValueI64High(expr: BinaryenExpressionRef): i32; +export declare function _BinaryenConstSetValueI64High(expr: BinaryenExpressionRef, value: i32): void; export declare function _BinaryenConstGetValueF32(expr: BinaryenExpressionRef): f32; +export declare function _BinaryenConstSetValueF32(expr: BinaryenExpressionRef, value: f32): void; export declare function _BinaryenConstGetValueF64(expr: BinaryenExpressionRef): f64; +export declare function _BinaryenConstSetValueF64(expr: BinaryenExpressionRef, value: f64): void; +export declare function _BinaryenConstGetValueV128(expr: BinaryenExpressionRef, valueOut: BinaryenArray): void; +export declare function _BinaryenConstSetValueV128(expr: BinaryenExpressionRef, value: BinaryenArray): void; +export declare function _BinaryenUnary(module: BinaryenModuleRef, op: BinaryenOp, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenUnaryGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenUnarySetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenUnaryGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenUnarySetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenBinary(module: BinaryenModuleRef, op: BinaryenOp, leftExpr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenBinaryGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenBinarySetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenBinaryGetLeft(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenBinarySetLeft(expr: BinaryenExpressionRef, leftExpr: BinaryenExpressionRef): void; export declare function _BinaryenBinaryGetRight(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenBinarySetRight(expr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSelect(module: BinaryenModuleRef, conditionExpr: BinaryenExpressionRef, ifTrueExpr: BinaryenExpressionRef, ifFalseExpr: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenSelectGetIfTrue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSelectSetIfTrue(expr: BinaryenExpressionRef, ifTrueExpr: BinaryenExpressionRef): void; export declare function _BinaryenSelectGetIfFalse(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSelectSetIfFalse(expr: BinaryenExpressionRef, ifFalseExpr: BinaryenExpressionRef): void; export declare function _BinaryenSelectGetCondition(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSelectSetCondition(expr: BinaryenExpressionRef, conditionExpr: BinaryenExpressionRef): void; +export declare function _BinaryenDrop(module: BinaryenModuleRef, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenDropGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenDropSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenReturn(module: BinaryenModuleRef, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenReturnGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenReturnSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenNop(module: BinaryenModuleRef): BinaryenExpressionRef; + +export declare function _BinaryenUnreachable(module: BinaryenModuleRef): BinaryenExpressionRef; + +export declare function _BinaryenAtomicRMW(module: BinaryenModuleRef, op: BinaryenOp, bytes: u32, offset: u32, ptrExpr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenAtomicRMWGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenAtomicRMWSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenAtomicRMWGetBytes(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenAtomicRMWSetBytes(expr: BinaryenExpressionRef, bytes: u32): void; export declare function _BinaryenAtomicRMWGetOffset(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenAtomicRMWSetOffset(expr: BinaryenExpressionRef, offset: u32): void; export declare function _BinaryenAtomicRMWGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicRMWSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; export declare function _BinaryenAtomicRMWGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicRMWSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenAtomicCmpxchg(module: BinaryenModuleRef, bytes: u32, offset: u32, ptrExpr: BinaryenExpressionRef, expectedExpr: BinaryenExpressionRef, replacementExpr: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenAtomicCmpxchgGetBytes(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenAtomicCmpxchgSetBytes(expr: BinaryenExpressionRef, bytes: u32): void; export declare function _BinaryenAtomicCmpxchgGetOffset(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenAtomicCmpxchgSetOffset(expr: BinaryenExpressionRef, offset: u32): void; export declare function _BinaryenAtomicCmpxchgGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicCmpxchgSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; export declare function _BinaryenAtomicCmpxchgGetExpected(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicCmpxchgSetExpected(expr: BinaryenExpressionRef, expectedExpr: BinaryenExpressionRef): void; export declare function _BinaryenAtomicCmpxchgGetReplacement(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicCmpxchgSetReplacement(expr: BinaryenExpressionRef, replacementExpr: BinaryenExpressionRef): void; +export declare function _BinaryenAtomicWait(module: BinaryenModuleRef, ptrExpr: BinaryenExpressionRef, expectedExpr: BinaryenExpressionRef, timeoutExpr: BinaryenExpressionRef, expectedType: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenAtomicWaitGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicWaitSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; export declare function _BinaryenAtomicWaitGetExpected(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicWaitSetExpected(expr: BinaryenExpressionRef, expectedExpr: BinaryenExpressionRef): void; export declare function _BinaryenAtomicWaitGetTimeout(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicWaitSetTimeout(expr: BinaryenExpressionRef, timeoutExpr: BinaryenExpressionRef): void; export declare function _BinaryenAtomicWaitGetExpectedType(expr: BinaryenExpressionRef): BinaryenType; +export declare function _BinaryenAtomicWaitSetExpectedType(expr: BinaryenExpressionRef, expectedType: BinaryenType): void; +export declare function _BinaryenAtomicNotify(module: BinaryenModuleRef, ptrExpr: BinaryenExpressionRef, notifyCountExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenAtomicNotifyGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicNotifySetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; export declare function _BinaryenAtomicNotifyGetNotifyCount(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicNotifySetNotifyCount(expr: BinaryenExpressionRef, notifyCountExpr: BinaryenExpressionRef): void; -export declare function _BinaryenAtomicFenceGetOrder(expr: BinaryenExportRef): u8; +export declare function _BinaryenAtomicFence(module: BinaryenModuleRef): BinaryenExpressionRef; +export declare function _BinaryenAtomicFenceGetOrder(expr: BinaryenExportRef): u8; // unused +export declare function _BinaryenAtomicFenceSetOrder(expr: BinaryenExportRef, order: u8): void; // unused +export declare function _BinaryenSIMDExtract(module: BinaryenModuleRef, op: BinaryenOp, vecExpr: BinaryenExpressionRef, index: u8): BinaryenExpressionRef; export declare function _BinaryenSIMDExtractGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenSIMDExtractSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenSIMDExtractGetVec(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSIMDExtractGetIdx(expr: BinaryenExpressionRef): u8; +export declare function _BinaryenSIMDExtractSetVec(expr: BinaryenExpressionRef, vecExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDExtractGetIndex(expr: BinaryenExpressionRef): u8; +export declare function _BinaryenSIMDExtractSetIndex(expr: BinaryenExpressionRef, index: u8): void; +export declare function _BinaryenSIMDReplace(module: BinaryenModuleRef, op: BinaryenOp, vecEpr: BinaryenExpressionRef, index: u8, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenSIMDReplaceGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenSIMDReplaceSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenSIMDReplaceGetVec(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSIMDReplaceGetIdx(expr: BinaryenExpressionRef): u8; +export declare function _BinaryenSIMDReplaceSetVec(expr: BinaryenExpressionRef, vecExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDReplaceGetIndex(expr: BinaryenExpressionRef): u8; +export declare function _BinaryenSIMDReplaceSetIndex(expr: BinaryenExpressionRef, index: u8): void; export declare function _BinaryenSIMDReplaceGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDReplaceSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDShuffle(module: BinaryenModuleRef, leftExpr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef, mask: BinaryenArray): BinaryenExpressionRef; export declare function _BinaryenSIMDShuffleGetLeft(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDShuffleSetLeft(expr: BinaryenExpressionRef, leftExpr: BinaryenExpressionRef): void; export declare function _BinaryenSIMDShuffleGetRight(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenSIMDShuffleGetMask(expr: BinaryenExpressionRef, outPtr: usize): void; +export declare function _BinaryenSIMDShuffleSetRight(expr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDShuffleGetMask(expr: BinaryenExpressionRef, maskOut: BinaryenArray): void; +export declare function _BinaryenSIMDShuffleSetMask(expr: BinaryenExpressionRef, mask: BinaryenArray): void; +export declare function _BinaryenSIMDTernary(module: BinaryenModuleRef, op: BinaryenOp, aExpr: BinaryenExpressionRef, bExpr: BinaryenExpressionRef, cExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenSIMDTernaryGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenSIMDTernarySetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenSIMDTernaryGetA(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDTernarySetA(expr: BinaryenExpressionRef, aExpr: BinaryenExpressionRef): void; export declare function _BinaryenSIMDTernaryGetB(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDTernarySetB(expr: BinaryenExpressionRef, bExpr: BinaryenExpressionRef): void; export declare function _BinaryenSIMDTernaryGetC(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDTernarySetC(expr: BinaryenExpressionRef, cExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDShift(module: BinaryenModuleRef, op: BinaryenOp, vecExpr: BinaryenExpressionRef, shiftExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenSIMDShiftGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenSIMDShiftSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenSIMDShiftGetVec(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDShiftSetVec(expr: BinaryenExpressionRef, vecExpr: BinaryenExpressionRef): void; export declare function _BinaryenSIMDShiftGetShift(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDShiftSetShift(expr: BinaryenExpressionRef, shiftExpr: BinaryenExpressionRef): void; +export declare function _BinaryenSIMDLoad(module: BinaryenModuleRef, op: BinaryenOp, offset: u32, align: u32, ptrExpr: BinaryenExportRef): BinaryenExpressionRef; export declare function _BinaryenSIMDLoadGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenSIMDLoadSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; export declare function _BinaryenSIMDLoadGetOffset(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenSIMDLoadSetOffset(expr: BinaryenExpressionRef, offset: u32): void; export declare function _BinaryenSIMDLoadGetAlign(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenSIMDLoadSetAlign(expr: BinaryenExpressionRef, align: u32): void; export declare function _BinaryenSIMDLoadGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenSIMDLoadSetPtr(expr: BinaryenExpressionRef, ptrExpr: BinaryenExpressionRef): void; +export declare function _BinaryenMemoryInit(module: BinaryenModuleRef, segmentIndex: u32, destExpr: BinaryenExpressionRef, offsetExpr: BinaryenExpressionRef, sizeExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenMemoryInitGetSegment(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenMemoryInitSetSegment(expr: BinaryenExpressionRef, segmentIndex: u32): void; export declare function _BinaryenMemoryInitGetDest(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryInitSetDest(expr: BinaryenExpressionRef, destExpr: BinaryenExpressionRef): void; export declare function _BinaryenMemoryInitGetOffset(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryInitSetOffset(expr: BinaryenExpressionRef, offsetExpr: BinaryenExpressionRef): void; export declare function _BinaryenMemoryInitGetSize(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryInitSetSize(expr: BinaryenExpressionRef, sizeExpr: BinaryenExpressionRef): void; +export declare function _BinaryenDataDrop(module: BinaryenModuleRef, segmentIndex: u32): BinaryenExpressionRef; export declare function _BinaryenDataDropGetSegment(expr: BinaryenExpressionRef): u32; +export declare function _BinaryenDataDropSetSegment(expr: BinaryenExpressionRef, segmentIndex: u32): void; +export declare function _BinaryenMemoryCopy(module: BinaryenModuleRef, destExpr: BinaryenExpressionRef, sourceExpr: BinaryenExpressionRef, sizeExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenMemoryCopyGetDest(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryCopySetDest(expr: BinaryenExpressionRef, destExpr: BinaryenExpressionRef): void; export declare function _BinaryenMemoryCopyGetSource(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryCopySetSource(expr: BinaryenExpressionRef, sourceExpr: BinaryenExpressionRef): void; export declare function _BinaryenMemoryCopyGetSize(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryCopySetSize(expr: BinaryenExpressionRef, sizeExpr: BinaryenExpressionRef): void; +export declare function _BinaryenMemoryFill(module: BinaryenModuleRef, destExpr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef, sizeExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenMemoryFillGetDest(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryFillSetDest(expr: BinaryenExpressionRef, destExpr: BinaryenExpressionRef): void; export declare function _BinaryenMemoryFillGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryFillSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; export declare function _BinaryenMemoryFillGetSize(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenMemoryFillSetSize(expr: BinaryenExpressionRef, sizeExpr: BinaryenExpressionRef): void; +export declare function _BinaryenRefNull(module: BinaryenModuleRef): BinaryenExpressionRef; + +export declare function _BinaryenRefIsNull(module: BinaryenModuleRef, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenRefIsNullGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefIsNullSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; -export declare function _BinaryenRefFuncGetFunc(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenRefFunc(module: BinaryenModuleRef, funcName: BinaryenString): BinaryenExpressionRef; +export declare function _BinaryenRefFuncGetFunc(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenRefFuncSetFunc(expr: BinaryenExpressionRef, funcName: BinaryenString): void; +export declare function _BinaryenTry(module: BinaryenModuleRef, bodyExpr: BinaryenExpressionRef, catchBodyExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenTryGetBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenTrySetBody(expr: BinaryenExpressionRef, bodyExpr: BinaryenExpressionRef): void; export declare function _BinaryenTryGetCatchBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenTrySetCatchBody(expr: BinaryenExpressionRef, catchBodyExpr: BinaryenExpressionRef): void; -export declare function _BinaryenThrowGetEvent(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenThrow(module: BinaryenModuleRef, eventName: BinaryenString, operands: BinaryenArray, numOperands: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenThrowGetEvent(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenThrowSetEvent(expr: BinaryenExpressionRef, eventName: BinaryenString): void; export declare function _BinaryenThrowGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; -export declare function _BinaryenThrowGetOperand(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenThrowGetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenThrowSetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenThrowAppendOperand(expr: BinaryenExpressionRef, operandExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenThrowInsertOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenThrowRemoveOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenRethrow(module: BinaryenModuleRef, exnrefExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenRethrowGetExnref(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRethrowSetExnref(expr: BinaryenExpressionRef, exnrefExpr: BinaryenExpressionRef): void; -export declare function _BinaryenBrOnExnGetEvent(expr: BinaryenExpressionRef): usize; -export declare function _BinaryenBrOnExnGetName(expr: BinaryenExpressionRef): usize; +export declare function _BinaryenBrOnExn(module: BinaryenModuleRef, name: BinaryenString, eventName: BinaryenString, exnrefExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenBrOnExnGetEvent(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenBrOnExnSetEvent(expr: BinaryenExpressionRef, eventName: BinaryenString): void; +export declare function _BinaryenBrOnExnGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenBrOnExnSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; export declare function _BinaryenBrOnExnGetExnref(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenBrOnExnSetExnref(expr: BinaryenExpressionRef, exnrefExpr: BinaryenExpressionRef): void; + +export declare function _BinaryenTupleMake(module: BinaryenModuleRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenTupleMakeGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTupleMakeGetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenTupleMakeSetOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTupleMakeAppendOperand(expr: BinaryenExpressionRef, operandExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTupleMakeInsertOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTupleMakeRemoveOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; + +export declare function _BinaryenTupleExtract(module: BinaryenModuleRef, tupleExpr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenTupleExtractGetTuple(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenTupleExtractSetTuple(expr: BinaryenExpressionRef, tupleExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTupleExtractGetIndex(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTupleExtractSetIndex(expr: BinaryenExpressionRef, index: BinaryenIndex): void; + +export declare function _BinaryenPop(module: BinaryenModuleRef, type: BinaryenType): BinaryenExpressionRef; type BinaryenFunctionRef = usize; -export declare function _BinaryenAddFunction(module: BinaryenModuleRef, name: usize, params: BinaryenType, results: BinaryenType, varTypes: usize, numVarTypes: BinaryenIndex, body: BinaryenExpressionRef): BinaryenFunctionRef; -export declare function _BinaryenGetFunction(module: BinaryenModuleRef, name: usize): BinaryenFunctionRef; -export declare function _BinaryenRemoveFunction(module: BinaryenModuleRef, name: usize): void; +export declare function _BinaryenAddFunction(module: BinaryenModuleRef, name: BinaryenString, params: BinaryenType, results: BinaryenType, varTypes: BinaryenArray, numVarTypes: BinaryenIndex, body: BinaryenExpressionRef): BinaryenFunctionRef; +export declare function _BinaryenGetFunction(module: BinaryenModuleRef, name: BinaryenString): BinaryenFunctionRef; +export declare function _BinaryenRemoveFunction(module: BinaryenModuleRef, name: BinaryenString): void; export declare function _BinaryenGetNumFunctions(module: BinaryenModuleRef): BinaryenIndex; export declare function _BinaryenGetFunctionByIndex(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenFunctionRef; -export declare function _BinaryenFunctionGetName(func: BinaryenFunctionRef): usize; +export declare function _BinaryenFunctionGetName(func: BinaryenFunctionRef): BinaryenString; export declare function _BinaryenFunctionGetParams(func: BinaryenFunctionRef): BinaryenType; export declare function _BinaryenFunctionGetResults(func: BinaryenFunctionRef): BinaryenType; export declare function _BinaryenFunctionGetNumVars(func: BinaryenFunctionRef): BinaryenIndex; export declare function _BinaryenFunctionGetVar(func: BinaryenFunctionRef, index: BinaryenIndex): BinaryenType; export declare function _BinaryenFunctionGetBody(func: BinaryenFunctionRef): BinaryenExpressionRef; +export declare function _BinaryenFunctionSetBody(func: BinaryenFunctionRef, bodyExpr: BinaryenExpressionRef): void; export declare function _BinaryenFunctionOptimize(func: BinaryenFunctionRef, module: BinaryenModuleRef): void; -export declare function _BinaryenFunctionRunPasses(func: BinaryenFunctionRef, module: BinaryenModuleRef, passes: usize, numPasses: BinaryenIndex): void; +export declare function _BinaryenFunctionRunPasses(func: BinaryenFunctionRef, module: BinaryenModuleRef, passes: BinaryenArray, numPasses: BinaryenIndex): void; export declare function _BinaryenFunctionSetDebugLocation(func: BinaryenFunctionRef, expr: BinaryenExpressionRef, fileIndex: BinaryenIndex, lineNumber: BinaryenIndex, columnNumber: BinaryenIndex): void; type BinaryenImportRef = usize; -export declare function _BinaryenAddFunctionImport(module: BinaryenModuleRef, internalName: usize, externalModuleName: usize, externalBaseName: usize, params: BinaryenType, results: BinaryenType): void; -export declare function _BinaryenAddTableImport(module: BinaryenModuleRef, internalName: usize, externalModuleName: usize, externalBaseName: usize): void; -export declare function _BinaryenAddMemoryImport(module: BinaryenModuleRef, internalName: usize, externalModuleName: usize, externalBaseName: usize, shared:bool): void; -export declare function _BinaryenAddGlobalImport(module: BinaryenModuleRef, internalName: usize, externalModuleName: usize, externalBaseName: usize, globalType: BinaryenType, mutable: bool): void; -export declare function _BinaryenAddEventImport(module: BinaryenModuleRef, internalName: usize, externalModuleName: usize, externalBaseName: usize, attribute: u32, params: BinaryenType, results: BinaryenType): void; +export declare function _BinaryenAddFunctionImport(module: BinaryenModuleRef, internalName: BinaryenString, externalModuleName: BinaryenString, externalBaseName: BinaryenString, params: BinaryenType, results: BinaryenType): void; +export declare function _BinaryenAddTableImport(module: BinaryenModuleRef, internalName: BinaryenString, externalModuleName: BinaryenString, externalBaseName: BinaryenString): void; +export declare function _BinaryenAddMemoryImport(module: BinaryenModuleRef, internalName: BinaryenString, externalModuleName: BinaryenString, externalBaseName: BinaryenString, shared:bool): void; +export declare function _BinaryenAddGlobalImport(module: BinaryenModuleRef, internalName: BinaryenString, externalModuleName: BinaryenString, externalBaseName: BinaryenString, globalType: BinaryenType, mutable: bool): void; +export declare function _BinaryenAddEventImport(module: BinaryenModuleRef, internalName: BinaryenString, externalModuleName: BinaryenString, externalBaseName: BinaryenString, attribute: u32, params: BinaryenType, results: BinaryenType): void; type BinaryenExportRef = usize; -export declare function _BinaryenAddFunctionExport(module: BinaryenModuleRef, internalName: usize, externalName: usize): BinaryenExportRef; -export declare function _BinaryenAddTableExport(module: BinaryenModuleRef, internalName: usize, externalName: usize): BinaryenExportRef; -export declare function _BinaryenAddMemoryExport(module: BinaryenModuleRef, internalName: usize, externalName: usize): BinaryenExportRef; -export declare function _BinaryenAddGlobalExport(module: BinaryenModuleRef, internalName: usize, externalName: usize): BinaryenExportRef; -export declare function _BinaryenAddEventExport(module: BinaryenModuleRef, internalName: usize, externalName: usize): BinaryenExportRef; -export declare function _BinaryenRemoveExport(module: BinaryenModuleRef, externalName: usize): void; +export declare function _BinaryenAddFunctionExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; +export declare function _BinaryenAddTableExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; +export declare function _BinaryenAddMemoryExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; +export declare function _BinaryenAddGlobalExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; +export declare function _BinaryenAddEventExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; +export declare function _BinaryenRemoveExport(module: BinaryenModuleRef, externalName: BinaryenString): void; export declare function _BinaryenGetNumExports(module: BinaryenModuleRef): BinaryenIndex; export declare function _BinaryenGetExportByIndex(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenExportRef; type BinaryenGlobalRef = usize; -export declare function _BinaryenAddGlobal(module: BinaryenModuleRef, name: usize, type: BinaryenType, mutable: bool, init: BinaryenExpressionRef): BinaryenGlobalRef; -export declare function _BinaryenGetGlobal(module: BinaryenModuleRef, name: usize): BinaryenGlobalRef; -export declare function _BinaryenRemoveGlobal(module: BinaryenModuleRef, name: usize): void; +export declare function _BinaryenAddGlobal(module: BinaryenModuleRef, name: BinaryenString, type: BinaryenType, mutable: bool, init: BinaryenExpressionRef): BinaryenGlobalRef; +export declare function _BinaryenGetGlobal(module: BinaryenModuleRef, name: BinaryenString): BinaryenGlobalRef; +export declare function _BinaryenRemoveGlobal(module: BinaryenModuleRef, name: BinaryenString): void; -export declare function _BinaryenGlobalGetName(global: BinaryenGlobalRef): usize; +export declare function _BinaryenGlobalGetName(global: BinaryenGlobalRef): BinaryenString; export declare function _BinaryenGlobalGetType(global: BinaryenGlobalRef): BinaryenType; export declare function _BinaryenGlobalIsMutable(global: BinaryenGlobalRef): bool; export declare function _BinaryenGlobalGetInitExpr(global: BinaryenGlobalRef): BinaryenExpressionRef; type BinaryenEventRef = usize; -export declare function _BinaryenAddEvent(module: BinaryenModuleRef, name: usize, attribute: u32, params: BinaryenType, results: BinaryenType): BinaryenEventRef; -export declare function _BinaryenGetEvent(module: BinaryenModuleRef, name: usize): BinaryenEventRef; -export declare function _BinaryenRemoveEvent(module: BinaryenModuleRef, name: usize): void; +export declare function _BinaryenAddEvent(module: BinaryenModuleRef, name: BinaryenString, attribute: u32, params: BinaryenType, results: BinaryenType): BinaryenEventRef; +export declare function _BinaryenGetEvent(module: BinaryenModuleRef, name: BinaryenString): BinaryenEventRef; +export declare function _BinaryenRemoveEvent(module: BinaryenModuleRef, name: BinaryenString): void; -export declare function _BinaryenEventGetName(event: BinaryenEventRef): usize; +export declare function _BinaryenEventGetName(event: BinaryenEventRef): BinaryenString; export declare function _BinaryenEventGetAttribute(event: BinaryenEventRef): u32; export declare function _BinaryenEventGetParams(event: BinaryenEventRef): BinaryenType; export declare function _BinaryenEventGetResults(event: BinaryenEventRef): BinaryenType; -export declare function _BinaryenSetFunctionTable(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, funcs: usize, numFuncs: BinaryenIndex, offset: BinaryenExpressionRef): void; +export declare function _BinaryenSetFunctionTable(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, funcs: BinaryenArray, numFuncs: BinaryenIndex, offset: BinaryenExpressionRef): void; -export declare function _BinaryenSetMemory(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, exportName: usize, segments: usize, segmentPassive: usize, segmentOffsets: usize, segmentSizes: usize, numSegments: BinaryenIndex, shared: bool): void; +export declare function _BinaryenSetMemory(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, exportName: BinaryenString, segments: BinaryenArray>, segmentPassive: BinaryenArray, segmentOffsets: BinaryenArray, segmentSizes: BinaryenArray, numSegments: BinaryenIndex, shared: bool): void; export declare function _BinaryenGetNumMemorySegments(module: BinaryenModuleRef): BinaryenIndex; export declare function _BinaryenGetMemorySegmentByteOffset(module: BinaryenModuleRef, index: BinaryenIndex): u32; export declare function _BinaryenGetMemorySegmentByteLength(module: BinaryenModuleRef, id: BinaryenIndex): usize; -export declare function _BinaryenCopyMemorySegmentData(module: BinaryenModuleRef, id: BinaryenIndex, buffer: usize): void; +export declare function _BinaryenCopyMemorySegmentData(module: BinaryenModuleRef, id: BinaryenIndex, buffer: BinaryenArray): void; export declare function _BinaryenSetStart(module: BinaryenModuleRef, start: BinaryenFunctionRef): void; -export declare function _BinaryenModuleParse(text: usize): BinaryenModuleRef; +export declare function _BinaryenModuleParse(text: BinaryenString): BinaryenModuleRef; export declare function _BinaryenModulePrint(module: BinaryenModuleRef): void; export declare function _BinaryenModulePrintAsmjs(module: BinaryenModuleRef): void; export declare function _BinaryenModuleValidate(module: BinaryenModuleRef): i32; export declare function _BinaryenModuleOptimize(module: BinaryenModuleRef): void; -export declare function _BinaryenModuleRunPasses(module: BinaryenModuleRef, passes: usize, numPasses: BinaryenIndex): void; +export declare function _BinaryenModuleRunPasses(module: BinaryenModuleRef, passes: BinaryenArray, numPasses: BinaryenIndex): void; export declare function _BinaryenModuleAutoDrop(module: BinaryenModuleRef): void; -export declare function _BinaryenModuleAllocateAndWrite(out: usize, module: BinaryenModuleRef, sourceMapUrl: usize): void; -export declare function _BinaryenModuleRead(input: usize, inputSize: usize): BinaryenModuleRef; +export declare function _BinaryenModuleAllocateAndWrite(out: BinaryenArray, module: BinaryenModuleRef, sourceMapUrl: BinaryenString): void; +export declare function _BinaryenModuleRead(input: BinaryenArray, inputSize: usize): BinaryenModuleRef; export declare function _BinaryenModuleInterpret(module: BinaryenModuleRef): void; -export declare function _BinaryenModuleAddDebugInfoFileName(module: BinaryenModuleRef, filename: usize): BinaryenIndex; -export declare function _BinaryenModuleGetDebugInfoFileName(module: BinaryenModuleRef, index: BinaryenIndex): usize; +export declare function _BinaryenModuleAddDebugInfoFileName(module: BinaryenModuleRef, filename: BinaryenString): BinaryenIndex; +export declare function _BinaryenModuleGetDebugInfoFileName(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenString; export declare function _BinaryenModuleGetFeatures(module: BinaryenModuleRef): BinaryenFeatureFlags; export declare function _BinaryenModuleSetFeatures(module: BinaryenModuleRef, featureFlags: BinaryenFeatureFlags): void; -export declare function _BinaryenAddCustomSection(module: BinaryenModuleRef, name: usize, contents: usize, contentsSize: BinaryenIndex): void; +export declare function _BinaryenAddCustomSection(module: BinaryenModuleRef, name: BinaryenString, contents: BinaryenArray, contentsSize: BinaryenIndex): void; type BinaryenSideEffects = u32; @@ -803,7 +955,7 @@ export declare function _RelooperCreate(module: BinaryenModuleRef): BinaryenRelo export declare function _RelooperAddBlock(relooper: BinaryenRelooperRef, code: BinaryenExpressionRef): BinaryenRelooperBlockRef; export declare function _RelooperAddBranch(from: BinaryenRelooperBlockRef, to: BinaryenRelooperBlockRef, condition: BinaryenExpressionRef, code: BinaryenExpressionRef): void; export declare function _RelooperAddBlockWithSwitch(relooper: BinaryenRelooperRef, code: BinaryenExpressionRef, condition: BinaryenExpressionRef): BinaryenRelooperBlockRef; -export declare function _RelooperAddBranchForSwitch(from: BinaryenRelooperBlockRef, to: BinaryenRelooperBlockRef, indexes: usize, numIndexes: BinaryenIndex, code: BinaryenExpressionRef): void; +export declare function _RelooperAddBranchForSwitch(from: BinaryenRelooperBlockRef, to: BinaryenRelooperBlockRef, indexes: BinaryenArray, numIndexes: BinaryenIndex, code: BinaryenExpressionRef): void; export declare function _RelooperRenderAndDispose(relooper: BinaryenRelooperRef, entry: BinaryenRelooperBlockRef, labelHelper: BinaryenIndex): BinaryenExpressionRef; type BinaryenExpressionRunnerRef = usize; @@ -814,7 +966,7 @@ export declare function _ExpressionRunnerFlagsPreserveSideeffects(): BinaryenExp export declare function _ExpressionRunnerFlagsTraverseCalls(): BinaryenExpressionRunnerFlags; export declare function _ExpressionRunnerCreate(module: BinaryenModuleRef, flags: BinaryenExpressionRunnerFlags, maxDepth: BinaryenIndex, maxLoopIterations: BinaryenIndex): BinaryenExpressionRunnerRef; export declare function _ExpressionRunnerSetLocalValue(runner: BinaryenExpressionRunnerRef, index: BinaryenIndex, value: BinaryenExpressionRef): bool; -export declare function _ExpressionRunnerSetGlobalValue(runner: BinaryenExpressionRunnerRef, name: usize, value: BinaryenExpressionRef): bool; +export declare function _ExpressionRunnerSetGlobalValue(runner: BinaryenExpressionRunnerRef, name: BinaryenString, value: BinaryenExpressionRef): bool; export declare function _ExpressionRunnerRunAndDispose(runner: BinaryenExpressionRunnerRef, expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenGetOptimizeLevel(): i32; @@ -825,8 +977,8 @@ export declare function _BinaryenGetDebugInfo(): bool; export declare function _BinaryenSetDebugInfo(on: bool): void; export declare function _BinaryenGetLowMemoryUnused(): bool; export declare function _BinaryenSetLowMemoryUnused(on: bool): void; -export declare function _BinaryenGetPassArgument(key: usize): usize; -export declare function _BinaryenSetPassArgument(key: usize, value: usize): void; +export declare function _BinaryenGetPassArgument(key: BinaryenString): BinaryenString; +export declare function _BinaryenSetPassArgument(key: BinaryenString, value: BinaryenString): void; export declare function _BinaryenClearPassArguments(): void; export declare function _BinaryenGetAlwaysInlineMaxSize(): BinaryenIndex; export declare function _BinaryenSetAlwaysInlineMaxSize(size: BinaryenIndex): void; diff --git a/src/module.ts b/src/module.ts index ebfbd43fe1..53239a43b3 100644 --- a/src/module.ts +++ b/src/module.ts @@ -626,7 +626,7 @@ export class Module { offset: Index = 0, align: Index = bytes // naturally aligned by default ): ExpressionRef { - return binaryen._BinaryenLoad(this.ref, bytes, signed ? 1 : 0, offset, align, type, ptr); + return binaryen._BinaryenLoad(this.ref, bytes, signed, offset, align, type, ptr); } store( @@ -1797,7 +1797,7 @@ export class Module { ) : binaryen._BinaryenLoad(this.ref, binaryen._BinaryenLoadGetBytes(expr), - binaryen._BinaryenLoadIsSigned(expr) ? 1 : 0, + binaryen._BinaryenLoadIsSigned(expr), binaryen._BinaryenLoadGetOffset(expr), binaryen._BinaryenLoadGetAlign(expr), binaryen._BinaryenExpressionGetType(expr), @@ -2013,8 +2013,8 @@ export function getBlockChildCount(expr: ExpressionRef): Index { return binaryen._BinaryenBlockGetNumChildren(expr); } -export function getBlockChild(expr: ExpressionRef, index: Index): ExpressionRef { - return binaryen._BinaryenBlockGetChild(expr, index); +export function getBlockChildAt(expr: ExpressionRef, index: Index): ExpressionRef { + return binaryen._BinaryenBlockGetChildAt(expr, index); } export function getIfCondition(expr: ExpressionRef): ExpressionRef { @@ -2073,8 +2073,8 @@ export function getCallOperandCount(expr: ExpressionRef): i32 { return binaryen._BinaryenCallGetNumOperands(expr); } -export function getCallOperand(expr: ExpressionRef, index: Index): ExpressionRef { - return binaryen._BinaryenCallGetOperand(expr, index); +export function getCallOperandAt(expr: ExpressionRef, index: Index): ExpressionRef { + return binaryen._BinaryenCallGetOperandAt(expr, index); } export function getHostOp(expr: ExpressionRef): ExpressionRef { @@ -2085,8 +2085,8 @@ export function getHostOperandCount(expr: ExpressionRef): Index { return binaryen._BinaryenHostGetNumOperands(expr); } -export function getHostOperand(expr: ExpressionRef, index: Index): ExpressionRef { - return binaryen._BinaryenHostGetOperand(expr, index); +export function getHostOperandAt(expr: ExpressionRef, index: Index): ExpressionRef { + return binaryen._BinaryenHostGetOperandAt(expr, index); } export function getHostName(expr: ExpressionRef): string | null { @@ -2495,7 +2495,7 @@ export function needsExplicitUnreachable(expr: ExpressionRef): bool { let numChildren = binaryen._BinaryenBlockGetNumChildren(expr); // last child needs unreachable return ( numChildren > 0 && - needsExplicitUnreachable(binaryen._BinaryenBlockGetChild(expr, numChildren - 1)) + needsExplicitUnreachable(binaryen._BinaryenBlockGetChildAt(expr, numChildren - 1)) ); } } @@ -2512,7 +2512,7 @@ export function traverse( switch (getExpressionId(expr)) { case ExpressionId.Block: { for (let i: Index = 0, n = binaryen._BinaryenBlockGetNumChildren(expr); i < n; ++i) { - visit(binaryen._BinaryenBlockGetChild(expr, i), data); + visit(binaryen._BinaryenBlockGetChildAt(expr, i), data); } break; } @@ -2538,13 +2538,13 @@ export function traverse( } case ExpressionId.Call: { for (let i: Index = 0, n = binaryen._BinaryenCallGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenCallGetOperand(expr, i), data); + visit(binaryen._BinaryenCallGetOperandAt(expr, i), data); } break; } case ExpressionId.CallIndirect: { for (let i: Index = 0, n = binaryen._BinaryenCallIndirectGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenCallIndirectGetOperand(expr, i), data); + visit(binaryen._BinaryenCallIndirectGetOperandAt(expr, i), data); } break; } @@ -2599,7 +2599,7 @@ export function traverse( } case ExpressionId.Host: { for (let i: Index = 0, n = binaryen._BinaryenHostGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenHostGetOperand(expr, i), data); + visit(binaryen._BinaryenHostGetOperandAt(expr, i), data); } break; } @@ -2703,7 +2703,7 @@ export function traverse( } case ExpressionId.Throw: { for (let i: Index = 0, n = binaryen._BinaryenThrowGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenThrowGetOperand(expr, i), data); + visit(binaryen._BinaryenThrowGetOperandAt(expr, i), data); } break; } @@ -2717,7 +2717,7 @@ export function traverse( } case ExpressionId.TupleMake: { for (let i: Index = 0, n = binaryen._BinaryenTupleMakeGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenTupleMakeGetOperand(expr, i), data); + visit(binaryen._BinaryenTupleMakeGetOperandAt(expr, i), data); } break; } diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index bc4ffc1f0a..12db290bd5 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -47,8 +47,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1 - i32.const 0 local.get $0 i32.reinterpret_f32 local.tee $1 @@ -59,7 +57,6 @@ local.tee $2 i32.const 255 i32.eq - select if local.get $0 local.get $0 @@ -191,8 +188,6 @@ (local $2 i64) (local $3 i64) (local $4 i64) - i32.const 1 - i32.const 0 local.get $0 i64.reinterpret_f64 local.tee $1 @@ -203,7 +198,6 @@ local.tee $2 i64.const 2047 i64.eq - select if local.get $0 local.get $0 diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat index 30dca3ad0d..5e7036cc7b 100644 --- a/tests/compiler/if.optimized.wat +++ b/tests/compiler/if.optimized.wat @@ -13,10 +13,9 @@ (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) (start $~start) (func $if/ifThenElse (param $0 i32) (result i32) - i32.const 1 - i32.const 0 local.get $0 - select + i32.eqz + i32.eqz ) (func $if/ifThen (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 24bbbd92a2..ee3dd5a1bf 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -348,10 +348,8 @@ br_if $__inlined_func$~lib/string/String.__eq drop block $folding-inner0 - i32.const 0 - i32.const 1 local.get $1 - select + i32.eqz br_if $folding-inner0 local.get $1 call $~lib/string/String#get:length diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index bf2d12dd7c..8b92f0d440 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -9475,8 +9475,6 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1 - i32.const 0 local.get $0 i32.reinterpret_f32 local.tee $1 @@ -9487,7 +9485,6 @@ local.tee $2 i32.const 255 i32.eq - select if local.get $0 f32.const 2 @@ -9702,8 +9699,6 @@ (local $2 i64) (local $3 i64) (local $4 i64) - i32.const 1 - i32.const 0 local.get $0 i64.reinterpret_f64 local.tee $1 @@ -9714,7 +9709,6 @@ local.tee $2 i64.const 2047 i64.eq - select if local.get $0 f64.const 2