diff --git a/src/compiler.ts b/src/compiler.ts index bd1d7708af..42090a6868 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -161,6 +161,7 @@ import { TernaryExpression, ArrayLiteralExpression, StringLiteralExpression, + UnaryExpression, UnaryPostfixExpression, UnaryPrefixExpression, @@ -1116,8 +1117,15 @@ export class Compiler extends DiagnosticEmitter { // Initialize to zero if there's no initializer } else { + let globalType = global.type; + if (globalType.is(TypeFlags.REFERENCE) && !globalType.is(TypeFlags.NULLABLE)) { + this.error( + DiagnosticCode.Object_is_possibly_null, + global.identifierNode.range + ); + } if (global.is(CommonFlags.INLINED)) { - initExpr = this.compileInlineConstant(global, global.type, Constraints.PREFER_STATIC | Constraints.WILL_RETAIN); + initExpr = this.compileInlineConstant(global, globalType, Constraints.PREFER_STATIC | Constraints.WILL_RETAIN); } else { initExpr = this.makeZero(type); } @@ -1303,10 +1311,12 @@ export class Compiler extends DiagnosticEmitter { let thisType = signature.thisType; if (thisType) { // No need to retain `this` as it can't be reassigned and thus can't become prematurely released + flow.setLocalFlag(index, LocalFlags.INITIALIZED); ++index; } let parameterTypes = signature.parameterTypes; for (let i = 0, k = parameterTypes.length; i < k; ++i, ++index) { + flow.setLocalFlag(index, LocalFlags.INITIALIZED); let type = parameterTypes[i]; if (type.isManaged) { stmts.push( @@ -2996,6 +3006,7 @@ export class Compiler extends DiagnosticEmitter { } let isManaged = type.isManaged; if (initExpr) { + flow.setLocalFlag(local.index, LocalFlags.INITIALIZED); if (flow.isNonnull(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.NONNULL); if (isManaged) { flow.setLocalFlag(local.index, LocalFlags.RETAINED); @@ -3741,7 +3752,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.LT); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -3841,7 +3852,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.GT); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -3944,7 +3955,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.LE); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4044,7 +4055,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.GE); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4145,13 +4156,13 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - // check operator overload - if (operator == Token.EQUALS_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) { + // check operator overload (cannot overload explicit null comparison) + if (this.currentType.is(TypeFlags.REFERENCE)) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.EQ); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverloadWithNullChecking(overload, true, leftExpr, leftType, right, expression); break; } } @@ -4245,13 +4256,13 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpression(left, contextualType); leftType = this.currentType; - // check operator overload - if (operator == Token.EXCLAMATION_EQUALS && this.currentType.is(TypeFlags.REFERENCE)) { + // check operator overload (cannot overload explicit null comparison) + if (this.currentType.is(TypeFlags.REFERENCE)) { let classReference = leftType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.NE); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverloadWithNullChecking(overload, false, leftExpr, leftType, right, expression); break; } } @@ -4354,7 +4365,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.ADD); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4443,7 +4454,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.SUB); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4536,7 +4547,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.MUL); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4629,7 +4640,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.POW); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4728,7 +4739,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.DIV); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -4840,7 +4851,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.REM); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5009,7 +5020,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHL); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5075,7 +5086,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5163,7 +5174,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_SHR_U); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5232,7 +5243,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_AND); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5322,7 +5333,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_OR); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5418,7 +5429,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_XOR); if (overload) { - expr = this.compileBinaryOverload(overload, left, leftExpr, right, expression); + expr = this.compileBinaryOverload(overload, leftExpr, leftType, right, expression); break; } } @@ -5742,40 +5753,126 @@ export class Compiler extends DiagnosticEmitter { } private compileUnaryOverload( - operatorInstance: Function, - value: Expression, + /** Overload function instance. */ + overload: Function, + /** Compiled value expression. */ valueExpr: ExpressionRef, - reportNode: Node + /** Value type. */ + valueType: Type, + /** Report node. */ + reportNode: UnaryExpression ): ExpressionRef { - // FIXME: see comment in compileBinaryOverload below why recompiling on type mismatch - // is a bad idea currently. so this assumes that the type matches. - return this.makeCallDirect(operatorInstance, [ valueExpr ], reportNode, false); + valueExpr = this.convertExpression(valueExpr, valueType, overload.unaryOverloadValueType, false, false, reportNode); + return this.makeCallDirect(overload, [ valueExpr ], reportNode, false); } private compileBinaryOverload( - operatorInstance: Function, - left: Expression, + /** Overload function instance. */ + overload: Function, + /** Compiled left expression. */ leftExpr: ExpressionRef, + /** Left expression type. */ + leftType: Type, + /** Right expression to compile. */ right: Expression, - reportNode: Node + /** Report node. */ + reportNode: BinaryExpression ): ExpressionRef { - var rightType: Type; - if (operatorInstance.is(CommonFlags.INSTANCE)) { - let classInstance = assert(operatorInstance.parent); assert(classInstance.kind == ElementKind.CLASS); - rightType = operatorInstance.signature.parameterTypes[0]; - } else { - // FIXME: if LHS type differs we can't recompile left because that'd completely confuse - // local states, like having retained locals that actually do not even exist, possibly - // releasing something random in that local before and evil things like that. Hence this - // assumes that LHS type matches, which in turn means that static overloads must be - // guaranteed to never mismatch LHS type, which in turn means that we can't have shiny - // things like multiple static overloads for different combinations of LHS/RHS types. - // We might want that at some point of course, but requires to complete the resolver so - // it can actually resolve every kind of expression without ever having to recompile. - rightType = operatorInstance.signature.parameterTypes[1]; - } - var rightExpr = this.compileExpression(right, rightType, Constraints.CONV_IMPLICIT); - return this.makeCallDirect(operatorInstance, [ leftExpr, rightExpr ], reportNode); + leftExpr = this.convertExpression(leftExpr, leftType, overload.binaryOverloadLeftType, false, false, reportNode); + var rightExpr = this.compileExpression(right, overload.binaryOverloadRightType, Constraints.CONV_IMPLICIT); + return this.makeCallDirect(overload, [ leftExpr, rightExpr ], reportNode); + } + + /** Like `compileBinaryOverload`, but with pre-applied null checking. */ + private compileBinaryOverloadWithNullChecking( + /** Overload function instance. */ + overload: Function, + /** Whether the overload returns `true` if both values are identity equal. */ + ifIdentityEqual: bool, + /** Compiled left expression. */ + leftExpr: ExpressionRef, + /** Left expression type. */ + leftType: Type, + /** Right expression to compile. */ + right: Expression, + /** Report node. */ + reportNode: BinaryExpression + ): ExpressionRef { + // Dealing with `null`s is left to the compiler and cannot be overloaded. + // This serves the purpose that we can emit properly null-checked code. + var module = this.module; + var flow = this.currentFlow; + leftExpr = this.convertExpression(leftExpr, leftType, + leftType.is(TypeFlags.NULLABLE) + ? overload.binaryOverloadLeftType.asNullable() + : overload.binaryOverloadLeftType, + false, false, reportNode.left + ); + var rightExpr = this.compileExpression(right, overload.binaryOverloadRightType); + var rightType = this.currentType; + rightExpr = this.convertExpression(rightExpr, rightType, + rightType.is(TypeFlags.NULLABLE) + ? overload.binaryOverloadRightType.asNullable() + : overload.binaryOverloadRightType, + false, false, reportNode.right + ); + var isWasm64 = this.options.isWasm64; + if (!flow.isNonnull(leftExpr, leftType)) { + if (!flow.isNonnull(rightExpr, rightType)) { + let tleft = flow.getTempLocal(leftType); + let tright = flow.getTempLocal(rightType); + let leftNativeType = leftType.toNativeType(); + let rightNativeType = rightType.toNativeType(); + let ret = module.if( + // if (EQZ left | EQZ right) ? left EQ right : OVERLOAD + module.binary(BinaryOp.OrI32, + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tleft.index, leftExpr)), + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tright.index, rightExpr)) + ), + module.binary( + isWasm64 + ? ifIdentityEqual ? BinaryOp.EqI64 : BinaryOp.NeI64 + : ifIdentityEqual ? BinaryOp.EqI32 : BinaryOp.NeI32, + module.local_get(tleft.index, leftNativeType), + module.local_get(tright.index, rightNativeType) + ), + this.makeCallDirect(overload, [ + module.local_get(tleft.index, leftNativeType), + module.local_get(tright.index, rightNativeType) + ], reportNode) + ); + flow.freeTempLocal(tright); + flow.freeTempLocal(tleft); + return ret; + } else { + let tleft = flow.getTempLocal(leftType); + let ret = module.if( + // if (EQZ left) ? false : OVERLOAD + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tleft.index, leftExpr)), + module.i32(ifIdentityEqual ? 0 : 1), + this.makeCallDirect(overload, [ + module.local_get(tleft.index, leftType.toNativeType()), + rightExpr + ], reportNode) + ); + flow.freeTempLocal(tleft); + return ret; + } + } else if (!flow.isNonnull(rightExpr, rightType)) { + let tright = flow.getTempLocal(rightType, findUsedLocals(leftExpr)); + let ret = module.if( + // if (EQZ right) ? false : OVERLOAD + module.unary(isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, module.local_tee(tright.index, rightExpr)), + module.i32(ifIdentityEqual ? 0 : 1), + this.makeCallDirect(overload, [ + leftExpr, + module.local_get(tright.index, rightType.toNativeType()) + ], reportNode) + ); + flow.freeTempLocal(tright); + return ret; + } + return this.makeCallDirect(overload, [ leftExpr, rightExpr ], reportNode); } private compileAssignment(expression: Expression, valueExpression: Expression, contextualType: Type): ExpressionRef { @@ -6766,6 +6863,7 @@ export class Compiler extends DiagnosticEmitter { if (!this.skippedAutoreleases.has(paramExpr)) paramExpr = this.makeRetain(paramExpr); flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED); } + flow.setLocalFlag(argumentLocal.index, LocalFlags.INITIALIZED); body.unshift( module.local_set(argumentLocal.index, paramExpr) ); @@ -6777,6 +6875,7 @@ export class Compiler extends DiagnosticEmitter { let thisType = assert(instance.signature.thisType); let thisLocal = flow.addScopedLocal(CommonNames.this_, thisType, usedLocals); // No need to retain `this` as it can't be reassigned and thus can't become prematurely released + flow.setLocalFlag(thisLocal.index, LocalFlags.INITIALIZED); body.unshift( module.local_set(thisLocal.index, thisArg) ); @@ -9109,7 +9208,7 @@ export class Compiler extends DiagnosticEmitter { flow.freeTempLocal(tempLocal); tempLocal = null; } - expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression); + expr = this.compileUnaryOverload(overload, getValue, this.currentType, expression); if (isInstance) break; return expr; // here } @@ -9198,7 +9297,7 @@ export class Compiler extends DiagnosticEmitter { flow.freeTempLocal(tempLocal); tempLocal = null; } - expr = this.compileUnaryOverload(overload, expression.operand, getValue, expression); + expr = this.compileUnaryOverload(overload, getValue, this.currentType, expression); if (overload.is(CommonFlags.INSTANCE)) break; return expr; // here } @@ -9342,7 +9441,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.PLUS); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } this.error( DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1, @@ -9375,7 +9474,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.MINUS); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } this.error( DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1, @@ -9443,7 +9542,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.PREFIX_INC); if (overload) { - expr = this.compileUnaryOverload(overload, expression.operand, expr, expression); + expr = this.compileUnaryOverload(overload, expr, this.currentType, expression); if (overload.is(CommonFlags.INSTANCE)) break; // re-assign return expr; // skip re-assign } @@ -9514,7 +9613,7 @@ export class Compiler extends DiagnosticEmitter { if (classReference) { let overload = classReference.lookupOverload(OperatorKind.PREFIX_DEC); if (overload) { - expr = this.compileUnaryOverload(overload, expression.operand, expr, expression); + expr = this.compileUnaryOverload(overload, expr, this.currentType, expression); if (overload.is(CommonFlags.INSTANCE)) break; // re-assign return expr; // skip re-assign } @@ -9583,7 +9682,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.NOT); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } // allow '!' for references even without an overload } @@ -9608,7 +9707,7 @@ export class Compiler extends DiagnosticEmitter { let classReference = this.currentType.classReference; if (classReference) { let overload = classReference.lookupOverload(OperatorKind.BITWISE_NOT); - if (overload) return this.compileUnaryOverload(overload, expression.operand, expr, expression); + if (overload) return this.compileUnaryOverload(overload, expr, this.currentType, expression); } this.error( DiagnosticCode.The_0_operator_cannot_be_applied_to_type_1, diff --git a/src/module.ts b/src/module.ts index 58c40425b6..a029dbe3d3 100644 --- a/src/module.ts +++ b/src/module.ts @@ -779,7 +779,7 @@ export class Module { ): ExpressionRef { if (type == NativeType.Auto) { type = binaryen._BinaryenExpressionGetType(ifTrue); - assert(type == binaryen._BinaryenExpressionGetType(ifFalse)); + // assert(type == binaryen._BinaryenExpressionGetType(ifFalse)); } return binaryen._BinaryenSelect(this.ref, condition, ifTrue, ifFalse, type); } diff --git a/src/program.ts b/src/program.ts index 6612ae778c..68edaecfb1 100644 --- a/src/program.ts +++ b/src/program.ts @@ -3118,6 +3118,37 @@ export class Function extends TypedElement { } } } + + /** Gets the value type of an unary operator overload. */ + get unaryOverloadValueType(): Type { + if (this.is(CommonFlags.INSTANCE)) { + return assert(this.signature.thisType); + } + var parameterTypes = this.signature.parameterTypes; + assert(parameterTypes.length >= 1); + return parameterTypes[0]; + } + + /** Gets the left type of a binary operator overload. */ + get binaryOverloadLeftType(): Type { + if (this.is(CommonFlags.INSTANCE)) { + return assert(this.signature.thisType); + } + var parameterTypes = this.signature.parameterTypes; + assert(parameterTypes.length >= 2); + return parameterTypes[0]; + } + + /** Gets the right type of a binary operator overload. */ + get binaryOverloadRightType(): Type { + var parameterTypes = this.signature.parameterTypes; + if (this.is(CommonFlags.INSTANCE)) { + assert(parameterTypes.length >= 1); + return parameterTypes[0]; + } + assert(parameterTypes.length >= 2); + return parameterTypes[1]; + } } var nextFunctionTarget = 0; diff --git a/std/assembly/array.ts b/std/assembly/array.ts index d70f80b511..be95a07163 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -16,7 +16,7 @@ function ensureSize(array: usize, minSize: usize, alignLog2: u32): void { let newCapacity = minSize << alignLog2; let newData = __realloc(oldData, newCapacity); // keeps RC memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity); - if (newData !== oldData) { // oldData has been free'd + if (changetype(newData) != changetype(oldData)) { // oldData has been free'd store(array, newData, offsetof("buffer")); store(array, newData, offsetof("dataStart")); } @@ -43,7 +43,10 @@ export class Array { private length_: i32; static isArray(value: U): bool { - return isReference() ? builtin_isArray(value) && value !== null : false; + if (isReference()) { + return value instanceof Array && changetype(value) != 0; + } + return false; } static create(capacity: i32 = 0): Array { @@ -224,7 +227,7 @@ export class Array { concat(other: Array): Array { var thisLen = this.length_; - var otherLen = select(0, other.length_, other === null); + var otherLen = select(0, other.length_, changetype(other) == 0); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains @@ -483,11 +486,7 @@ export class Array { if (isBoolean()) return joinBooleanArray(dataStart, length, separator); if (isInteger()) return joinIntegerArray(dataStart, length, separator); if (isFloat()) return joinFloatArray(dataStart, length, separator); - - if (ASC_SHRINK_LEVEL < 1) { - if (isString()) return joinStringArray(dataStart, length, separator); - } - // For rest objects and arrays use general join routine + if (isString()) return joinStringArray(dataStart, length, separator); if (isReference()) return joinReferenceArray(dataStart, length, separator); ERROR("unspported element type"); return unreachable(); diff --git a/std/assembly/arraybuffer.ts b/std/assembly/arraybuffer.ts index 5e948c9bfe..63036c876b 100644 --- a/std/assembly/arraybuffer.ts +++ b/std/assembly/arraybuffer.ts @@ -32,21 +32,23 @@ export abstract class ArrayBufferView { @sealed export class ArrayBuffer { static isView(value: T): bool { - if (isNullable()) { - if (value === null) return false; + if (isReference()) { + if (isNullable()) { + if (!changetype(value)) return false; + } + if (value instanceof Int8Array) return true; + if (value instanceof Uint8Array) return true; + if (value instanceof Uint8ClampedArray) return true; + if (value instanceof Int16Array) return true; + if (value instanceof Uint16Array) return true; + if (value instanceof Int32Array) return true; + if (value instanceof Uint32Array) return true; + if (value instanceof Int64Array) return true; + if (value instanceof Uint64Array) return true; + if (value instanceof Float32Array) return true; + if (value instanceof Float64Array) return true; + if (value instanceof DataView) return true; } - if (value instanceof Int8Array) return true; - if (value instanceof Uint8Array) return true; - if (value instanceof Uint8ClampedArray) return true; - if (value instanceof Int16Array) return true; - if (value instanceof Uint16Array) return true; - if (value instanceof Int32Array) return true; - if (value instanceof Uint32Array) return true; - if (value instanceof Int64Array) return true; - if (value instanceof Uint64Array) return true; - if (value instanceof Float32Array) return true; - if (value instanceof Float64Array) return true; - if (value instanceof DataView) return true; return false; } diff --git a/std/assembly/map.ts b/std/assembly/map.ts index 0e82f9f96c..2f6818683e 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -102,7 +102,7 @@ export class Map { } has(key: K): bool { - return this.find(key, HASH(key)) !== null; + return changetype(this.find(key, HASH(key))) != 0; } @operator("[]") diff --git a/std/assembly/rt/pure.ts b/std/assembly/rt/pure.ts index 0f27bd326e..e7006d014f 100644 --- a/std/assembly/rt/pure.ts +++ b/std/assembly/rt/pure.ts @@ -1,5 +1,5 @@ import { DEBUG, BLOCK_OVERHEAD } from "rt/common"; -import { Block, freeBlock, ROOT } from "rt/tlsf"; +import { Block, freeBlock, Root, ROOT } from "rt/tlsf"; import { TypeinfoFlags } from "shared/typeinfo"; import { onincrement, ondecrement, onfree, onalloc } from "./rtrace"; @@ -124,10 +124,10 @@ function decrement(s: Block): void { __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT); if (isDefined(__GC_ALL_ACYCLIC)) { if (DEBUG) assert(!(info & BUFFERED_MASK)); - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } else { if (!(info & BUFFERED_MASK)) { - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } else { s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0; } @@ -205,7 +205,7 @@ export function __collect(): void { cur += sizeof(); } else { if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) { - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } else { s.gcInfo = info & ~BUFFERED_MASK; } @@ -261,7 +261,7 @@ function collectWhite(s: Block): void { if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) { s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK; __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE); - freeBlock(ROOT, s); + freeBlock(changetype(ROOT), s); } } diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index 2a71356ff3..b6c1a1f1fe 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -122,7 +122,7 @@ import { REFCOUNT_MASK } from "./pure"; // │ tail │ ◄────┘ // └───────────────────────────────────────────────────────────────┘ SIZE ┘ // S: Small blocks map -@unmanaged class Root { +@unmanaged export class Root { /** First level bitmap. */ flMap: usize; } @@ -141,7 +141,7 @@ import { REFCOUNT_MASK } from "./pure"; @inline const ROOT_SIZE: usize = HL_END + sizeof(); // @ts-ignore: decorator -@lazy export var ROOT: Root; +@lazy export var ROOT: Root | null; /** Gets the second level map of the specified first level. */ // @ts-ignore: decorator diff --git a/std/assembly/set.ts b/std/assembly/set.ts index ca2a1ca299..d51a94ba1a 100644 --- a/std/assembly/set.ts +++ b/std/assembly/set.ts @@ -98,7 +98,7 @@ export class Set { @operator("[]") has(key: T): bool { - return this.find(key, HASH(key)) !== null; + return changetype(this.find(key, HASH(key))) != 0; } add(key: T): this { diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index 8a3bbcb06c..81d36b0a1e 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -19,22 +19,22 @@ export class StaticArray { static fromArray(source: Array): StaticArray { var length = source.length; var outSize = length << alignof(); - var out = __alloc(outSize, idof>()); + var outPtr = __alloc(outSize, idof>()); + var srcPtr = load(changetype(source), offsetof>("dataStart")); if (isManaged()) { - let sourcePtr = source.dataStart; for (let i = 0; i < length; ++i) { let off = i << alignof(); - store(out + off, __retain(load(sourcePtr + off))); + store(outPtr + off, __retain(load(srcPtr + off))); } } else { - memory.copy(out, source.dataStart, outSize); + memory.copy(outPtr, srcPtr, outSize); } - return changetype>(out); + return changetype>(outPtr); } static concat(source: StaticArray, other: StaticArray): StaticArray { var sourceLen = source.length; - var otherLen = select(0, other.length, other === null); + var otherLen = select(0, other.length, changetype(other) == 0); var outLen = sourceLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__alloc(outLen << alignof(), idof>())); // retains @@ -166,28 +166,28 @@ export class StaticArray { concat(other: Array): Array { var thisLen = this.length; - var otherLen = select(0, other.length, other === null); + var otherLen = select(0, other.length, changetype(other) == 0); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains - var outStart = out.dataStart; + var outPtr = load(changetype(out), offsetof>("dataStart")); + var otherPtr = load(changetype(other), offsetof>("dataStart")); var thisSize = thisLen << alignof(); if (isManaged()) { let thisStart = changetype(this); for (let offset: usize = 0; offset < thisSize; offset += sizeof()) { let ref = load(thisStart + offset); - store(outStart + offset, __retain(ref)); + store(outPtr + offset, __retain(ref)); } - outStart += thisSize; - let otherStart = other.dataStart; + outPtr += thisSize; let otherSize = otherLen << alignof(); for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { - let ref = load(otherStart + offset); - store(outStart + offset, __retain(ref)); + let ref = load(otherPtr + offset); + store(outPtr + offset, __retain(ref)); } } else { - memory.copy(outStart, changetype(this), thisSize); - memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof()); + memory.copy(outPtr, changetype(this), thisSize); + memory.copy(outPtr + thisSize, otherPtr, otherLen << alignof()); } return out; } @@ -198,18 +198,18 @@ export class StaticArray { end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains - var sliceBase = slice.dataStart; - var thisBase = changetype(this) + (start << alignof()); + var slicePtr = load(changetype(slice), offsetof>("dataStart")); + var thisPtr = changetype(this) + (start << alignof()); if (isManaged()) { let off = 0; let end = length << alignof(); while (off < end) { - let ref = load(thisBase + off); - store(sliceBase + off, __retain(ref)); + let ref = load(thisPtr + off); + store(slicePtr + off, __retain(ref)); off += sizeof(); } } else { - memory.copy(sliceBase, thisBase, length << alignof()); + memory.copy(slicePtr, thisPtr, length << alignof()); } return slice; } diff --git a/std/assembly/string.ts b/std/assembly/string.ts index c5d245bcf1..0fd3f0d463 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -22,7 +22,7 @@ import { Array } from "./array"; static fromCharCodes(units: Array): String { var length = units.length; var out = __alloc(length << 1, idof()); - var ptr = units.dataStart; + var ptr = load(changetype(units), offsetof>("dataStart")); for (let i = 0; i < length; ++i) { store(out + (i << 1), load(ptr + (i << 2))); } @@ -48,7 +48,7 @@ import { Array } from "./array"; return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1; } - @operator("[]") charAt(pos: i32): String { + charAt(pos: i32): String { if (pos >= this.length) return changetype(""); var out = __alloc(2, idof()); store(out, load(changetype(this) + (pos << 1))); @@ -70,12 +70,7 @@ import { Array } from "./array"; return (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; } - @operator("+") private static __concat(left: String, right: String): String { - return select(left, changetype("null"), left !== null).concat(right); - } - concat(other: String): String { - if (other === null) other = changetype("null"); var thisSize: isize = this.length << 1; var otherSize: isize = other.length << 1; var outSize: usize = thisSize + otherSize; @@ -87,7 +82,6 @@ import { Array } from "./array"; } endsWith(search: String, end: i32 = String.MAX_LENGTH): bool { - if (search === null) return false; end = min(max(end, 0), this.length); var searchLength = search.length; var searchStart = end - searchLength; @@ -96,53 +90,6 @@ import { Array } from "./array"; return !compareImpl(this, searchStart, search, 0, searchLength); } - @operator("==") private static __eq(left: String | null, right: String | null): bool { - if (left === right) return true; - if (left === null || right === null) return false; - var leftLength = left.length; - if (leftLength != right.length) return false; - // @ts-ignore: string <-> String - return !compareImpl(left, 0, right, 0, leftLength); - } - - @operator.prefix("!") - private static __not(str: String | null): bool { - return str === null || !str.length; - } - - @operator("!=") - private static __ne(left: String | null, right: String | null): bool { - return !this.__eq(left, right); - } - - @operator(">") private static __gt(left: String | null, right: String | null): bool { - if (left === right || left === null || right === null) return false; - var leftLength = left.length; - if (!leftLength) return false; - var rightLength = right.length; - if (!rightLength) return true; - // @ts-ignore: string <-> String - return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0; - } - - @operator(">=") private static __gte(left: String, right: String): bool { - return !this.__lt(left, right); - } - - @operator("<") private static __lt(left: String, right: String): bool { - if (left === right || left === null || right === null) return false; - var rightLength = right.length; - if (!rightLength) return false; - var leftLength = left.length; - if (!leftLength) return true; - // @ts-ignore: string <-> String - return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0; - } - - @operator("<=") private static __lte(left: String, right: String): bool { - return !this.__gt(left, right); - } - includes(search: String, start: i32 = 0): bool { return this.indexOf(search, start) != -1; } @@ -175,7 +122,7 @@ import { Array } from "./array"; // TODO: implement full locale comparison with locales and Collator options localeCompare(other: String): i32 { - if (other === this) return 0; // compare pointers + if (changetype(other) == changetype(this)) return 0; var len: isize = this.length; var otherLen: isize = other.length; if (otherLen != len) return select(1, -1, len > otherLen); @@ -185,7 +132,6 @@ import { Array } from "./array"; } startsWith(search: String, start: i32 = 0): bool { - if (search === null) search = changetype("null"); var len = this.length; var searchStart = min(max(start, 0), len); var searchLength = search.length; @@ -455,9 +401,9 @@ import { Array } from "./array"; split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] { if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains - if (separator === null) return [this]; + if (!changetype(separator)) return [this]; var length: isize = this.length; - var sepLen = separator.length; + var sepLen = changetype(separator).length; if (limit < 0) limit = i32.MAX_VALUE; if (!sepLen) { if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains @@ -481,7 +427,7 @@ import { Array } from "./array"; } var result = changetype>(__allocArray(0, alignof(), idof>())); // retains var end = 0, start = 0, i = 0; - while (~(end = this.indexOf(separator, start))) { + while (~(end = this.indexOf(changetype(separator), start))) { let len = end - start; if (len > 0) { let out = __alloc(len << 1, idof()); @@ -632,6 +578,71 @@ import { Array } from "./array"; toString(): String { return this; } + + @operator("==") + private _eq(other: string): bool { + var thisLength = this.length; + if (thisLength != other.length) return false; + return !compareImpl(changetype(this), 0, other, 0, thisLength); + } + + @operator("!=") + private _ne(other: string): bool { + return !this._eq(other); + } + + @operator(">") + private static _gt(left: String | null, right: String | null): bool { + if ( + changetype(left) == changetype(right) || + !changetype(left) || + !changetype(right) + ) return false; + var leftLength = changetype(left).length; + if (!leftLength) return false; + var rightLength = changetype(right).length; + if (!rightLength) return true; + // @ts-ignore: string <-> String + return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0; + } + + @operator(">=") + private static _ge(left: String | null, right: String | null): bool { + return !String.__lt(left, right); + } + + @operator("<") + private static __lt(left: String | null, right: String | null): bool { + if ( + changetype(left) == changetype(right) || + !changetype(left) || + !changetype(right) + ) return false; + var rightLength = changetype(right).length; + if (!rightLength) return false; + var leftLength = changetype(left).length; + if (!leftLength) return true; + return compareImpl(changetype(left), 0, changetype(right), 0, min(leftLength, rightLength)) < 0; + } + + @operator("<=") + private static __le(left: String | null, right: String | null): bool { + return !String._gt(left, right); + } + + @operator("+") private static _add(left: String, right: String): String { + return select(left, changetype("null"), changetype(left) != 0).concat(right); + } + + @operator("[]") + private _get(index: i32): String { + return this.charAt(index); + } + + @operator.prefix("!") + private _not(): bool { + return !this.length; + } } // @ts-ignore: nolib diff --git a/std/assembly/symbol.ts b/std/assembly/symbol.ts index b503b50705..0252fcc6c2 100644 --- a/std/assembly/symbol.ts +++ b/std/assembly/symbol.ts @@ -2,11 +2,11 @@ import { Map } from "./map"; // @ts-ignore: decorator @lazy -var stringToId: Map; +var stringToId: Map | null; // @ts-ignore: decorator @lazy -var idToString: Map; +var idToString: Map | null; // @ts-ignore: decorator @lazy @@ -67,18 +67,23 @@ var nextId: usize = 12; // Symbol.unscopables + 1 static readonly unscopables: symbol = changetype(11); static for(key: string): symbol { - if (!stringToId) { stringToId = new Map(); idToString = new Map(); } - else if (stringToId.has(key)) return changetype(stringToId.get(key)); + var stoi = stringToId; + if (!stoi) { + stringToId = stoi = new Map(); + idToString = new Map(); + } + else if (stoi.has(key)) return changetype(stoi.get(key)); var id = nextId++; if (!id) unreachable(); // out of ids - stringToId.set(key, id); - idToString.set(id, key); + stoi.set(key, id); + changetype>(idToString).set(id, key); return changetype(id); } static keyFor(sym: symbol): string | null { - return idToString !== null && idToString.has(changetype(sym)) - ? idToString.get(changetype(sym)) + var itos = idToString; + return itos != null && itos.has(changetype(sym)) + ? itos.get(changetype(sym)) : null; } @@ -98,7 +103,7 @@ var nextId: usize = 12; // Symbol.unscopables + 1 case 10: { str = "toStringTag"; break; } case 11: { str = "unscopables"; break; } default: { - if (idToString !== null && idToString.has(id)) str = idToString.get(id); + if (idToString != null && idToString.has(id)) str = idToString.get(id); break; } } diff --git a/std/assembly/util/hash.ts b/std/assembly/util/hash.ts index 2d58d92909..e0b70ce8f9 100644 --- a/std/assembly/util/hash.ts +++ b/std/assembly/util/hash.ts @@ -63,10 +63,10 @@ function hash64(key: u64): u32 { return v; } -function hashStr(key: string): u32 { +function hashStr(key: string | null): u32 { var v = FNV_OFFSET; - if (key !== null) { - for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) { + if (changetype(key)) { + for (let i: usize = 0, k: usize = changetype(key).length << 1; i < k; ++i) { v = (v ^ load(changetype(key) + i)) * FNV_PRIME; } } diff --git a/std/assembly/util/memory.ts b/std/assembly/util/memory.ts index d5daa5f526..6be4bb25e3 100644 --- a/std/assembly/util/memory.ts +++ b/std/assembly/util/memory.ts @@ -144,7 +144,7 @@ export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/s // @ts-ignore: decorator @inline export function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c - if (dest === src) return; + if (dest == src) return; if (ASC_SHRINK_LEVEL < 1) { if (src + n <= dest || dest + n <= src) { memcpy(dest, src, n); diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 3ab895b259..015c99f99a 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -29,7 +29,11 @@ export function COMPARATOR(): (a: T, b: T) => i32 { } } else if (isString()) { return (a: T, b: T): i32 => { - if (a === b || a === null || b === null) return 0; + if ( + changetype(a) == changetype(b) || + !changetype(a) || + !changetype(b) + ) return 0; var alen = changetype(a).length; var blen = changetype(b).length; if (!alen && !blen) return 0; diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index 0ae05927dc..e88fe81753 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -940,14 +940,14 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string for (let i = 0; i < length; ++i) { value = load(dataStart + (i << alignof())); // @ts-ignore: type - if (value !== null) estLen += value.length; + if (changetype(value)) estLen += value.length; } var offset = 0; var sepLen = separator.length; var result = __alloc((estLen + sepLen * lastIndex) << 1, idof()); for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); - if (value !== null) { + if (changetype(value)) { let valueLen = value.length; memory.copy( result + (offset << 1), @@ -966,7 +966,7 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } } value = load(dataStart + (lastIndex << alignof())); - if (value !== null) { + if (changetype(value)) { memory.copy( result + (offset << 1), changetype(value), @@ -977,25 +977,26 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } export function joinReferenceArray(dataStart: usize, length: i32, separator: string): string { + assert(!isString()); var lastIndex = length - 1; if (lastIndex < 0) return ""; var value: T; if (!lastIndex) { value = load(dataStart); // @ts-ignore: type - return value !== null ? value.toString() : ""; + return value ? value.toString() : ""; } var result = ""; var sepLen = separator.length; for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); // @ts-ignore: type - if (value !== null) result += value.toString(); + if (value) result += value.toString(); if (sepLen) result += separator; } value = load(dataStart + (lastIndex << alignof())); // @ts-ignore: type - if (value !== null) result += value.toString(); + if (value) result += value.toString(); return result; } diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index d69cc5cebf..978d12633b 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -85,7 +85,7 @@ if i32.const 1104 i32.const 1168 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -98,7 +98,7 @@ if i32.const 1216 i32.const 1168 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -113,7 +113,7 @@ if i32.const 1104 i32.const 1168 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 7a453631f6..d470920e0d 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -122,7 +122,7 @@ if i32.const 96 i32.const 160 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -138,7 +138,7 @@ call $~lib/rt/stub/__release i32.const 208 i32.const 160 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -188,7 +188,7 @@ if i32.const 96 i32.const 160 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 153bfc6bf2..f733282686 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -141,37 +141,23 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:builtins~anonymous|0 (; 6 ;) nop @@ -610,7 +596,7 @@ call $~lib/builtins/trace i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -622,7 +608,7 @@ end i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -634,7 +620,7 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -646,7 +632,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -658,7 +644,7 @@ end i32.const 1312 i32.const 1312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -670,7 +656,7 @@ end i32.const 1344 i32.const 1344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -682,7 +668,7 @@ end i32.const 1376 i32.const 1376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -694,7 +680,7 @@ end i32.const 1408 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -706,7 +692,7 @@ end i32.const 1440 i32.const 1440 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -718,7 +704,7 @@ end i32.const 1472 i32.const 1472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -730,7 +716,7 @@ end i32.const 1504 i32.const 1504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -742,7 +728,7 @@ end i32.const 1536 i32.const 1536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -754,7 +740,7 @@ end i32.const 1568 i32.const 1568 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -766,7 +752,7 @@ end i32.const 1600 i32.const 1600 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -778,7 +764,7 @@ end i32.const 1632 i32.const 1632 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -790,7 +776,7 @@ end i32.const 1664 i32.const 1664 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -802,7 +788,7 @@ end i32.const 1696 i32.const 1696 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -814,7 +800,7 @@ end i32.const 1728 i32.const 1728 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -826,7 +812,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -838,7 +824,7 @@ end i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index a57d539d81..470447c196 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -99,10 +99,7 @@ (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 5 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 4 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -110,6 +107,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 5 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 6 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -232,78 +232,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $start:builtins~anonymous|0 (; 8 ;) nop @@ -1630,7 +1590,7 @@ end i32.const 208 i32.const 208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1642,7 +1602,7 @@ end i32.const 208 i32.const 208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1654,7 +1614,7 @@ end i32.const 240 i32.const 240 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1666,7 +1626,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1678,7 +1638,7 @@ end i32.const 304 i32.const 304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1690,7 +1650,7 @@ end i32.const 336 i32.const 336 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1702,7 +1662,7 @@ end i32.const 368 i32.const 368 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1714,7 +1674,7 @@ end i32.const 400 i32.const 400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1726,7 +1686,7 @@ end i32.const 432 i32.const 432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1738,7 +1698,7 @@ end i32.const 464 i32.const 464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1750,7 +1710,7 @@ end i32.const 496 i32.const 496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1762,7 +1722,7 @@ end i32.const 528 i32.const 528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1774,7 +1734,7 @@ end i32.const 560 i32.const 560 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1786,7 +1746,7 @@ end i32.const 592 i32.const 592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1798,7 +1758,7 @@ end i32.const 624 i32.const 624 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1810,7 +1770,7 @@ end i32.const 656 i32.const 656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1822,7 +1782,7 @@ end i32.const 688 i32.const 688 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1834,7 +1794,7 @@ end i32.const 720 i32.const 720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1846,7 +1806,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1858,7 +1818,7 @@ end i32.const 208 i32.const 208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 2fc08fc407..14cccadadc 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -452,7 +452,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.optimized.wat index 23da3862e2..d2889ed179 100644 --- a/tests/compiler/empty.optimized.wat +++ b/tests/compiler/empty.optimized.wat @@ -1,4 +1,179 @@ (module - (memory $0 0) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 1028) "\01\00\00\00\01") + (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1072) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s") + (data (i32.const 1104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") (export "memory" (memory $0)) + (start $~start) + (func $~lib/string/String#get:length (; 2 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/string/compareImpl (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 1056 + local.set $3 + local.get $0 + i32.const 7 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $0 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.sub + local.tee $1 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $2 + if + local.get $3 + i32.load16_u + local.tee $2 + local.get $0 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $2 + local.get $4 + i32.sub + return + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/string/String#_eq (; 4 ;) (param $0 i32) (result i32) + (local $1 i32) + i32.const 1056 + call $~lib/string/String#get:length + local.tee $1 + local.get $0 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~start (; 5 ;) + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1056 + call $~lib/string/String#_eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1120 + call $~lib/string/String#_eq + if + i32.const 0 + i32.const 1088 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 1040 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + ) ) diff --git a/tests/compiler/empty.ts b/tests/compiler/empty.ts index e69de29bb2..be553b1fda 100644 --- a/tests/compiler/empty.ts +++ b/tests/compiler/empty.ts @@ -0,0 +1,10 @@ +trace(""); +assert("a" == "a"); +trace(""); +assert(!("a" == "b")); +trace(""); +assert(!("a" == null)); +trace(""); +assert(!(null == "a")); +trace(""); +assert(null == null); diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index bffe105a3d..b78894d46c 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -1,5 +1,326 @@ (module - (memory $0 0) + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 16) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 32) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 64) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s\00") + (data (i32.const 96) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") (table $0 1 funcref) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/stub/__retain (; 2 ;) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/string/String#get:length (; 3 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) + nop + ) + (func $~lib/util/string/compareImpl (; 5 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $start:empty (; 7 ;) + (local $0 i32) + (local $1 i32) + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 48 + i32.const 48 + call $~lib/string/String#_eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 48 + i32.const 112 + call $~lib/string/String#_eq + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + local.tee $0 + i32.eqz + if (result i32) + i32.const 0 + else + i32.const 48 + local.get $0 + call $~lib/string/String#_eq + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + local.tee $0 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $0 + i32.const 48 + call $~lib/string/String#_eq + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + i32.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + local.tee $0 + i32.eqz + i32.const 0 + local.tee $1 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $0 + local.get $1 + call $~lib/string/String#_eq + end + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 8 ;) + call $start:empty + ) ) diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat index bdc208c53b..eea73dc873 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -15,7 +15,6 @@ (memory $0 1) (data (i32.const 1024) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") (global $features/reference-types/nullGlobal (mut anyref) (ref.null)) - (global $features/reference-types/nullGlobalInit (mut anyref) (ref.null)) (global $features/reference-types/funcGlobal (mut anyref) (ref.null)) (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) @@ -51,21 +50,10 @@ global.get $features/reference-types/someKey call $~lib/bindings/Reflect/get call $~lib/bindings/console/log - global.get $features/reference-types/nullGlobal - ref.is_null - i32.eqz - if - i32.const 0 - i32.const 1040 - i32.const 32 - i32.const 1 - call $~lib/builtins/abort - unreachable - end ref.null global.set $features/reference-types/nullGlobal ref.null - global.set $features/reference-types/nullGlobalInit + global.set $features/reference-types/nullGlobal ref.func $features/reference-types/someFunc global.set $features/reference-types/funcGlobal ) diff --git a/tests/compiler/features/reference-types.ts b/tests/compiler/features/reference-types.ts index 3a2cf0e7e0..e507e7ef59 100644 --- a/tests/compiler/features/reference-types.ts +++ b/tests/compiler/features/reference-types.ts @@ -28,12 +28,10 @@ console.log(Reflect.get(someObject, someKey)); // can represent and recognize 'null' -var nullGlobal: anyref; +var nullGlobal: anyref = null; assert(!nullGlobal); nullGlobal = null; assert(!nullGlobal); -var nullGlobalInit: anyref = null; -assert(!nullGlobalInit); { let nullLocal: anyref; assert(!nullLocal); diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index 985c04b056..2e294c3f7b 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -16,7 +16,6 @@ (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") (table $0 1 funcref) (global $features/reference-types/nullGlobal (mut anyref) (ref.null)) - (global $features/reference-types/nullGlobalInit (mut anyref) (ref.null)) (global $features/reference-types/funcGlobal (mut anyref) (ref.null)) (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) @@ -50,6 +49,8 @@ global.get $features/reference-types/someKey call $~lib/bindings/Reflect/get call $~lib/bindings/console/log + ref.null + global.set $features/reference-types/nullGlobal global.get $features/reference-types/nullGlobal ref.is_null i32.eqz @@ -78,21 +79,6 @@ call $~lib/builtins/abort unreachable end - ref.null - global.set $features/reference-types/nullGlobalInit - global.get $features/reference-types/nullGlobalInit - ref.is_null - i32.eqz - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 36 - i32.const 1 - call $~lib/builtins/abort - unreachable - end local.get $0 ref.is_null i32.eqz @@ -101,7 +87,7 @@ if i32.const 0 i32.const 32 - i32.const 39 + i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable @@ -116,7 +102,7 @@ if i32.const 0 i32.const 32 - i32.const 41 + i32.const 39 i32.const 3 call $~lib/builtins/abort unreachable @@ -131,7 +117,7 @@ if i32.const 0 i32.const 32 - i32.const 43 + i32.const 41 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index c290f19e9b..4ac1b3661d 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -497,7 +497,7 @@ end i32.const 1072 i32.const 1136 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index cb8c1303c0..8cabcc5358 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1454,7 +1454,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1486,7 +1486,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1515,7 +1515,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1544,7 +1544,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1586,7 +1586,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1616,7 +1616,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1645,7 +1645,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1675,7 +1675,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1691,7 +1691,7 @@ call $~lib/rt/stub/__release i32.const 640 i32.const 128 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index 24fbba0670..0aec014b24 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -1,13 +1,105 @@ (module + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1024) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $instanceof/a (mut i32) (i32.const 0)) + (global $instanceof/b (mut i32) (i32.const 0)) (global $instanceof/an (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~start (; 1 ;) + (func $~lib/rt/stub/__alloc (; 1 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 + i32.const 16 + i32.add + local.tee $1 + memory.size + local.tee $4 + i32.const 16 + i32.shl + local.tee $2 + i32.gt_u + if + local.get $4 + local.get $1 + local.get $2 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $4 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $1 + global.set $~lib/rt/stub/offset + local.get $3 + i32.const 16 + i32.sub + local.tee $1 + i32.const 16 + i32.store + local.get $1 + i32.const 1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $3 + ) + (func $instanceof/A#constructor (; 2 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 3 + call $~lib/rt/stub/__alloc + local.set $0 + end + local.get $0 + ) + (func $~start (; 3 ;) + i32.const 1072 + global.set $~lib/rt/stub/startOffset + i32.const 1072 + global.set $~lib/rt/stub/offset + i32.const 0 + call $instanceof/A#constructor + global.set $instanceof/a + i32.const 4 + call $~lib/rt/stub/__alloc + call $instanceof/A#constructor + global.set $instanceof/b global.get $instanceof/an if i32.const 0 diff --git a/tests/compiler/instanceof.ts b/tests/compiler/instanceof.ts index 2cff1b0bc4..5151626b55 100644 --- a/tests/compiler/instanceof.ts +++ b/tests/compiler/instanceof.ts @@ -1,8 +1,8 @@ class A {} class B extends A {} -var a: A; -var b: B; +var a: A = new A(); +var b: B = new B(); var i: i32; var I: i64; var f: f32; diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 6f99e7c909..46e913482d 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -3,11 +3,14 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") (table $0 1 funcref) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $instanceof/a (mut i32) (i32.const 0)) (global $instanceof/b (mut i32) (i32.const 0)) (global $instanceof/i (mut i32) (i32.const 0)) @@ -15,33 +18,184 @@ (global $instanceof/f (mut f32) (f32.const 0)) (global $instanceof/F (mut f64) (f64.const 0)) (global $instanceof/an (mut i32) (i32.const 0)) + (global $~lib/heap/__heap_base i32 (i32.const 60)) (export "memory" (memory $0)) (start $~start) - (func $instanceof/isI32 (; 1 ;) (param $0 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + local.set $1 + local.get $1 + i32.const 16 + i32.shl + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + local.get $2 + i32.sub + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $4 + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $0 + global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $3 + i32.const 16 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $5 + local.get $2 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory + local.get $2 + i32.const 16 + i32.sub + local.set $6 + local.get $6 + local.get $5 + i32.store + local.get $6 + i32.const 1 + i32.store offset=4 + local.get $6 + local.get $1 + i32.store offset=8 + local.get $6 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) + local.get $0 + ) + (func $instanceof/A#constructor (; 4 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + ) + (func $instanceof/B#constructor (; 5 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + call $instanceof/A#constructor + local.set $0 + local.get $0 + ) + (func $instanceof/isI32 (; 6 ;) (param $0 i32) (result i32) i32.const 1 return ) - (func $instanceof/isI32 (; 2 ;) (param $0 f64) (result i32) + (func $instanceof/isI32 (; 7 ;) (param $0 f64) (result i32) i32.const 0 return ) - (func $instanceof/isI32 (; 3 ;) (param $0 i32) (result i32) + (func $instanceof/isI32 (; 8 ;) (param $0 i32) (result i32) i32.const 0 return ) - (func $instanceof/isI32 (; 4 ;) (param $0 i32) (result i32) + (func $instanceof/isI32 (; 9 ;) (param $0 i32) (result i32) i32.const 0 return ) - (func $~lib/rt/stub/__retain (; 5 ;) (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (; 6 ;) (param $0 i32) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) nop ) - (func $start:instanceof (; 7 ;) + (func $start:instanceof (; 11 ;) (local $0 i32) (local $1 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + i32.const 0 + call $instanceof/A#constructor + global.set $instanceof/a + i32.const 0 + call $instanceof/B#constructor + global.set $instanceof/b i32.const 0 call $instanceof/isI32 i32.eqz @@ -129,7 +283,7 @@ unreachable end ) - (func $~start (; 8 ;) + (func $~start (; 12 ;) call $start:instanceof ) ) diff --git a/tests/compiler/new.ts b/tests/compiler/new.ts index 87827c0da5..56c1c460f6 100644 --- a/tests/compiler/new.ts +++ b/tests/compiler/new.ts @@ -2,7 +2,7 @@ class Ref { get ref(): Ref { return this; } } -var ref: Ref; +var ref: Ref | null; ref = new Ref(); ref = new Ref; ref = new Ref().ref; @@ -11,7 +11,7 @@ class Gen { get gen(): Gen { return this; } } -var gen: Gen; +var gen: Gen | null; gen = new Gen(); gen = new Gen().gen; @@ -21,7 +21,7 @@ namespace ns { } } -var ref2: ns.Ref; +var ref2: ns.Ref | null; ref2 = new ns.Ref(); ref2 = new ns.Ref; ref2 = new ns.Ref().ref; diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 0349fd6933..6676e3edc7 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -317,37 +317,23 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/util/number/genDigits (; 8 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32) (local $6 i32) @@ -1470,7 +1456,7 @@ global.get $number/a call $~lib/number/I32#toString i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1482,7 +1468,7 @@ end call $~lib/util/number/dtoa i32.const 2336 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1495,7 +1481,7 @@ i32.const 3 call $~lib/number/I32#toString i32.const 2368 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1508,7 +1494,7 @@ i32.const -5 call $~lib/number/I32#toString i32.const 2400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1521,7 +1507,7 @@ i32.const 4 call $~lib/number/I32#toString i32.const 2432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1538,7 +1524,7 @@ global.get $number/a call $~lib/number/I32#toString i32.const 2464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1555,7 +1541,7 @@ global.get $number/a call $~lib/number/I32#toString i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1567,7 +1553,7 @@ end i32.const 2496 i32.const 2496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1579,7 +1565,7 @@ end i32.const 2528 i32.const 2528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1597,7 +1583,7 @@ local.get $0 call $~lib/number/I32#toString i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1615,7 +1601,7 @@ local.get $0 call $~lib/number/I32#toString i32.const 2464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index b564102a88..928de74cc3 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -424,10 +424,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 10 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -435,6 +432,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -557,78 +557,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/util/number/genDigits (; 13 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) @@ -3436,7 +3396,7 @@ call $~lib/number/I32#toString local.tee $0 i32.const 480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3451,7 +3411,7 @@ call $~lib/number/F64#toString local.tee $1 i32.const 1744 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3465,7 +3425,7 @@ call $~lib/number/I32#toString local.tee $2 i32.const 1776 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3479,7 +3439,7 @@ call $~lib/number/I32#toString local.tee $3 i32.const 1808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3493,7 +3453,7 @@ call $~lib/number/I32#toString local.tee $4 i32.const 1840 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3511,7 +3471,7 @@ call $~lib/number/I32#toString local.tee $5 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3529,7 +3489,7 @@ call $~lib/number/I32#toString local.tee $6 i32.const 480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3543,7 +3503,7 @@ call $~lib/number/Bool#toString local.tee $7 i32.const 1904 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3557,7 +3517,7 @@ call $~lib/number/Bool#toString local.tee $8 i32.const 1936 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3576,7 +3536,7 @@ call $~lib/number/I32#toString local.tee $9 i32.const 480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3595,7 +3555,7 @@ call $~lib/number/I32#toString local.tee $10 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 370d6b7124..dbc477617c 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -485,7 +485,7 @@ if i32.const 1072 i32.const 1136 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 2f4ee6f7c2..d796131eb3 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1448,7 +1448,7 @@ if i32.const 64 i32.const 128 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index fae5386c40..ab629ed1b0 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -140,37 +140,23 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/util/number/decimalCount32 (; 4 ;) (param $0 i32) (result i32) local.get $0 @@ -1431,7 +1417,7 @@ (func $start:resolve-binary (; 14 ;) i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1443,7 +1429,7 @@ end i32.const 1072 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1455,7 +1441,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1467,7 +1453,7 @@ end i32.const 1072 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1479,7 +1465,7 @@ end i32.const 1072 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1491,7 +1477,7 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1502,8 +1488,13 @@ unreachable end i32.const 1040 + i32.const 1072 + i32.const 1168 + i32.const 1168 + call $~lib/string/String#_eq + select i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1514,8 +1505,13 @@ unreachable end i32.const 1072 + i32.const 1040 + i32.const 1168 + i32.const 1168 + call $~lib/string/String#_eq + select i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1534,7 +1530,7 @@ i32.const 1 call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1551,7 +1547,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1568,7 +1564,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1585,7 +1581,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1601,7 +1597,7 @@ global.set $resolve-binary/f call $~lib/util/number/dtoa i32.const 2480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1618,7 +1614,7 @@ i32.const 2 call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1635,7 +1631,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1652,7 +1648,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 2512 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1669,7 +1665,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1686,7 +1682,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1703,7 +1699,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1720,7 +1716,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 2544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1737,7 +1733,7 @@ global.get $resolve-binary/a call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1750,7 +1746,7 @@ i32.const 3 call $~lib/number/I32#toString i32.const 2544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1763,7 +1759,7 @@ i32.const -1 call $~lib/number/I32#toString i32.const 2576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1776,7 +1772,7 @@ i32.const 2 call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1789,7 +1785,7 @@ i32.const 2 call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1802,7 +1798,7 @@ i32.const 1 call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1814,7 +1810,7 @@ end call $~lib/util/number/dtoa i32.const 2480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1827,7 +1823,7 @@ i32.const 4 call $~lib/number/I32#toString i32.const 2512 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1840,7 +1836,7 @@ i32.const 1 call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1853,7 +1849,7 @@ i32.const 3 call $~lib/number/I32#toString i32.const 2544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1866,7 +1862,7 @@ i32.const 1 call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1879,7 +1875,7 @@ i32.const 3 call $~lib/number/I32#toString i32.const 2544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1892,7 +1888,7 @@ i32.const 2 call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1905,7 +1901,7 @@ i32.const 2 call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1918,7 +1914,7 @@ i32.const 0 call $~lib/number/I32#toString i32.const 1200 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1931,7 +1927,7 @@ i32.const 1 call $~lib/number/I32#toString i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1944,7 +1940,7 @@ i32.const 2 call $~lib/number/I32#toString i32.const 1264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1960,7 +1956,7 @@ global.set $resolve-binary/foo i32.const 2608 i32.const 2608 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1972,7 +1968,7 @@ end i32.const 2640 i32.const 2640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1984,7 +1980,7 @@ end i32.const 2672 i32.const 2672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1996,7 +1992,7 @@ end i32.const 2704 i32.const 2704 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2008,7 +2004,7 @@ end i32.const 2736 i32.const 2736 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2020,7 +2016,7 @@ end i32.const 2768 i32.const 2768 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2032,7 +2028,7 @@ end i32.const 2800 i32.const 2800 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2044,7 +2040,7 @@ end i32.const 2832 i32.const 2832 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2056,7 +2052,7 @@ end i32.const 2864 i32.const 2864 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2068,7 +2064,7 @@ end i32.const 2896 i32.const 2896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2080,7 +2076,7 @@ end i32.const 2928 i32.const 2928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2092,7 +2088,7 @@ end i32.const 2960 i32.const 2960 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 2aca1ab4f4..edd0ca62b5 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -79,10 +79,7 @@ (func $~lib/rt/stub/__retain (; 2 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 3 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 4 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 3 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -90,6 +87,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 5 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -212,80 +212,54 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 + local.set $3 + local.get $1 call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String#_ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 local.get $1 call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount32 (; 7 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 8 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -340,7 +314,7 @@ end unreachable ) - (func $~lib/rt/stub/maybeGrowMemory (; 8 ;) (param $0 i32) + (func $~lib/rt/stub/maybeGrowMemory (; 9 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -394,7 +368,7 @@ local.get $0 global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -447,7 +421,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/util/number/utoa32_lut (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -587,7 +561,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 11 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 12 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -641,16 +615,16 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 12 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 13 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 13 ;) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 14 ;) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa ) - (func $~lib/math/NativeMath.pow (; 14 ;) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 15 ;) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -1610,7 +1584,7 @@ end return ) - (func $~lib/util/number/genDigits (; 15 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 16 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -2113,7 +2087,7 @@ end unreachable ) - (func $~lib/util/memory/memcpy (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3137,7 +3111,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3357,7 +3331,7 @@ end end ) - (func $~lib/util/number/prettify (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3674,7 +3648,7 @@ end unreachable ) - (func $~lib/util/number/dtoa_core (; 19 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 20 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4100,7 +4074,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4207,7 +4181,7 @@ local.get $11 call $~lib/rt/stub/__retain ) - (func $~lib/rt/stub/__free (; 21 ;) (param $0 i32) + (func $~lib/rt/stub/__free (; 22 ;) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -4257,7 +4231,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~lib/util/number/dtoa (; 22 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 23 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4318,11 +4292,11 @@ call $~lib/rt/stub/__free local.get $3 ) - (func $~lib/number/F64#toString (; 23 ;) (param $0 f64) (param $1 i32) (result i32) + (func $~lib/number/F64#toString (; 24 ;) (param $0 f64) (param $1 i32) (result i32) local.get $0 call $~lib/util/number/dtoa ) - (func $resolve-binary/Foo#constructor (; 24 ;) (param $0 i32) (result i32) + (func $resolve-binary/Foo#constructor (; 25 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4334,7 +4308,7 @@ end local.get $0 ) - (func $resolve-binary/Foo#lt (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#lt (; 26 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4345,11 +4319,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String#toString (; 26 ;) (param $0 i32) (result i32) + (func $~lib/string/String#toString (; 27 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $resolve-binary/Foo#gt (; 27 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#gt (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4360,7 +4334,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#le (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#le (; 29 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4371,7 +4345,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ge (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ge (; 30 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4382,7 +4356,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#eq (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#eq (; 31 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4393,7 +4367,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#ne (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#ne (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4404,7 +4378,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#add (; 32 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#add (; 33 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4415,7 +4389,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo.sub (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo.sub (; 34 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4431,7 +4405,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#mul (; 34 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#mul (; 35 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4442,7 +4416,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#div (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#div (; 36 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4453,7 +4427,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#rem (; 36 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#rem (; 37 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4464,7 +4438,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Foo#pow (; 37 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Foo#pow (; 38 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4475,7 +4449,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $resolve-binary/Bar#constructor (; 38 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#constructor (; 39 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4487,17 +4461,17 @@ end local.get $0 ) - (func $resolve-binary/Bar#add (; 39 ;) (param $0 i32) (param $1 i32) (result i32) + (func $resolve-binary/Bar#add (; 40 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $1 ) - (func $resolve-binary/Bar#self (; 40 ;) (param $0 i32) (result i32) + (func $resolve-binary/Bar#self (; 41 ;) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain ) - (func $start:resolve-binary (; 41 ;) + (func $start:resolve-binary (; 42 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4566,7 +4540,7 @@ call $~lib/number/Bool#toString local.tee $0 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4580,7 +4554,7 @@ call $~lib/number/Bool#toString local.tee $1 i32.const 64 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4594,7 +4568,7 @@ call $~lib/number/Bool#toString local.tee $2 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4608,7 +4582,7 @@ call $~lib/number/Bool#toString local.tee $3 i32.const 64 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4622,7 +4596,7 @@ call $~lib/number/Bool#toString local.tee $4 i32.const 64 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4636,7 +4610,7 @@ call $~lib/number/Bool#toString local.tee $5 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4646,11 +4620,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1 + i32.const 160 + i32.const 160 + call $~lib/string/String#_eq call $~lib/number/Bool#toString local.tee $6 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4660,11 +4636,13 @@ call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 160 + i32.const 160 + call $~lib/string/String#_ne call $~lib/number/Bool#toString local.tee $7 i32.const 64 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4690,7 +4668,7 @@ call $~lib/number/I32#toString local.tee $8 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4708,7 +4686,7 @@ call $~lib/number/I32#toString local.tee $9 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4726,7 +4704,7 @@ call $~lib/number/I32#toString local.tee $10 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4744,7 +4722,7 @@ call $~lib/number/I32#toString local.tee $11 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4765,7 +4743,7 @@ call $~lib/number/F64#toString local.tee $12 i32.const 8064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4785,7 +4763,7 @@ call $~lib/number/I32#toString local.tee $13 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4803,7 +4781,7 @@ call $~lib/number/I32#toString local.tee $14 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4821,7 +4799,7 @@ call $~lib/number/I32#toString local.tee $15 i32.const 8096 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4839,7 +4817,7 @@ call $~lib/number/I32#toString local.tee $16 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4857,7 +4835,7 @@ call $~lib/number/I32#toString local.tee $17 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4875,7 +4853,7 @@ call $~lib/number/I32#toString local.tee $18 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4893,7 +4871,7 @@ call $~lib/number/I32#toString local.tee $19 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4911,7 +4889,7 @@ call $~lib/number/I32#toString local.tee $20 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4925,7 +4903,7 @@ call $~lib/number/I32#toString local.tee $21 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4939,7 +4917,7 @@ call $~lib/number/I32#toString local.tee $22 i32.const 8160 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4953,7 +4931,7 @@ call $~lib/number/I32#toString local.tee $23 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4967,7 +4945,7 @@ call $~lib/number/I32#toString local.tee $24 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4981,7 +4959,7 @@ call $~lib/number/I32#toString local.tee $25 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4998,7 +4976,7 @@ call $~lib/number/F64#toString local.tee $26 i32.const 8064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5012,7 +4990,7 @@ call $~lib/number/I32#toString local.tee $27 i32.const 8096 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5026,7 +5004,7 @@ call $~lib/number/I32#toString local.tee $28 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5040,7 +5018,7 @@ call $~lib/number/I32#toString local.tee $29 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5054,7 +5032,7 @@ call $~lib/number/I32#toString local.tee $30 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5068,7 +5046,7 @@ call $~lib/number/I32#toString local.tee $31 i32.const 8128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5082,7 +5060,7 @@ call $~lib/number/I32#toString local.tee $32 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5096,7 +5074,7 @@ call $~lib/number/I32#toString local.tee $33 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5110,7 +5088,7 @@ call $~lib/number/I32#toString local.tee $34 i32.const 192 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5124,7 +5102,7 @@ call $~lib/number/I32#toString local.tee $35 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5138,7 +5116,7 @@ call $~lib/number/I32#toString local.tee $36 i32.const 672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5158,7 +5136,7 @@ call $~lib/string/String#toString local.tee $38 i32.const 8192 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5175,7 +5153,7 @@ call $~lib/string/String#toString local.tee $40 i32.const 8224 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5192,7 +5170,7 @@ call $~lib/string/String#toString local.tee $42 i32.const 8256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5209,7 +5187,7 @@ call $~lib/string/String#toString local.tee $44 i32.const 8288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5226,7 +5204,7 @@ call $~lib/string/String#toString local.tee $46 i32.const 8320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5243,7 +5221,7 @@ call $~lib/string/String#toString local.tee $48 i32.const 8352 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5260,7 +5238,7 @@ call $~lib/string/String#toString local.tee $50 i32.const 8384 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5277,7 +5255,7 @@ call $~lib/string/String#toString local.tee $52 i32.const 8416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5294,7 +5272,7 @@ call $~lib/string/String#toString local.tee $54 i32.const 8448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5311,7 +5289,7 @@ call $~lib/string/String#toString local.tee $56 i32.const 8480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5328,7 +5306,7 @@ call $~lib/string/String#toString local.tee $58 i32.const 8512 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5345,7 +5323,7 @@ call $~lib/string/String#toString local.tee $60 i32.const 8544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5531,7 +5509,7 @@ local.get $62 call $~lib/rt/stub/__release ) - (func $~start (; 42 ;) + (func $~start (; 43 ;) call $start:resolve-binary ) ) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 0c6393c88e..cc1c80f921 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1806,37 +1806,23 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/typedarray/Uint8Array#__set (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 @@ -1931,7 +1917,7 @@ f64.promote_f32 call $~lib/util/number/dtoa i32.const 2464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1947,7 +1933,7 @@ f64.promote_f32 call $~lib/util/number/dtoa i32.const 2560 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1972,7 +1958,7 @@ f64.promote_f32 call $~lib/util/number/dtoa i32.const 2592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2031,7 +2017,7 @@ call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString i32.const 2656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2046,7 +2032,7 @@ call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString i32.const 2688 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2070,7 +2056,7 @@ call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString i32.const 2720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index bae345c1c3..3d2d0cb690 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -3547,78 +3547,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 23 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 23 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/typedarray/Uint8Array#constructor (; 24 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -3771,7 +3731,7 @@ call $~lib/number/F32#toString local.tee $0 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3787,7 +3747,7 @@ call $~lib/number/F32#toString local.tee $1 i32.const 1968 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3813,7 +3773,7 @@ call $~lib/number/F32#toString local.tee $2 i32.const 2000 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3863,7 +3823,7 @@ call $~lib/number/U8#toString local.tee $3 i32.const 2064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3879,7 +3839,7 @@ call $~lib/number/U8#toString local.tee $2 i32.const 2096 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3905,7 +3865,7 @@ call $~lib/number/U8#toString local.tee $4 i32.const 2128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 4909b6928a..ed3bd531c0 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -214,34 +214,21 @@ global.set $~lib/rt/stub/offset i32.const 1 global.set $~argumentsLength - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 + block $__inlined_func$~lib/string/String#_eq (result i32) + i32.const 0 call $~lib/util/number/itoa32 local.tee $0 + call $~lib/string/String#get:length + local.tee $1 i32.const 1152 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq + call $~lib/string/String#get:length + i32.ne + br_if $__inlined_func$~lib/string/String#_eq drop - block $folding-inner0 - i32.const 0 - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $1 - i32.const 1152 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - call $~lib/util/string/compareImpl - i32.eqz - br $__inlined_func$~lib/string/String.__eq - end - i32.const 0 + local.get $0 + local.get $1 + call $~lib/util/string/compareImpl + i32.eqz end i32.eqz if diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 6c5e9e274f..447bd4e834 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -409,10 +409,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 13 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 14 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 13 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -420,6 +417,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 14 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -542,78 +542,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 16 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $start:resolve-function-expression (; 17 ;) (local $0 i32) @@ -667,7 +627,7 @@ call $~lib/number/I32#toString local.tee $0 i32.const 560 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-nested.ts b/tests/compiler/resolve-nested.ts index a2fa919378..fbf3befa42 100644 --- a/tests/compiler/resolve-nested.ts +++ b/tests/compiler/resolve-nested.ts @@ -3,12 +3,12 @@ export namespace Outer { export class InnerClass {} export namespace Inner { export class EvenInnerClass {} - var a: OuterClass; - var b: InnerClass; - var c: EvenInnerClass; - var d: Outer.InnerClass; - var e: Outer.Inner.EvenInnerClass; - var f: Inner.EvenInnerClass; + var a: OuterClass | null; + var b: InnerClass | null; + var c: EvenInnerClass | null; + var d: Outer.InnerClass | null; + var e: Outer.Inner.EvenInnerClass | null; + var f: Inner.EvenInnerClass | null; export function evenInner( a: OuterClass, b: InnerClass, @@ -18,11 +18,11 @@ export namespace Outer { f: Inner.EvenInnerClass ): void {} } - var a: OuterClass; - var b: InnerClass; - var c: Inner.EvenInnerClass; - var d: Outer.InnerClass; - var e: Outer.Inner.EvenInnerClass; + var a: OuterClass | null; + var b: InnerClass | null; + var c: Inner.EvenInnerClass | null; + var d: Outer.InnerClass | null; + var e: Outer.Inner.EvenInnerClass | null; export function inner( a: OuterClass, b: InnerClass, @@ -31,9 +31,9 @@ export namespace Outer { e: Outer.Inner.EvenInnerClass ): void {} } -var a: OuterClass; -var b: Outer.InnerClass; -var c: Outer.Inner.EvenInnerClass; +var a: OuterClass | null; +var b: Outer.InnerClass | null; +var c: Outer.Inner.EvenInnerClass | null; export function outer( a: OuterClass, b: Outer.InnerClass, diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 007575786e..daa087ab23 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -293,37 +293,23 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:resolve-propertyaccess (; 6 ;) (local $0 i32) @@ -334,7 +320,7 @@ i32.const 1 call $~lib/util/number/itoa32 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -347,7 +333,7 @@ i32.const 11 call $~lib/util/number/itoa32 i32.const 1184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -360,7 +346,7 @@ i32.const 2 call $~lib/util/number/itoa32 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -373,7 +359,7 @@ i32.const 22 call $~lib/util/number/itoa32 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -386,7 +372,7 @@ i32.const 3 call $~lib/util/number/itoa32 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -399,7 +385,7 @@ i32.const 33 call $~lib/util/number/itoa32 i32.const 1312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -412,7 +398,7 @@ i32.const 4 call $~lib/util/number/itoa32 i32.const 1344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -425,7 +411,7 @@ i32.const 5 call $~lib/util/number/itoa32 i32.const 1376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -438,7 +424,7 @@ i32.const 55 call $~lib/util/number/itoa32 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -458,7 +444,7 @@ i32.load call $~lib/util/number/itoa32 i32.const 1440 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 72af135a4b..112c18174e 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -405,10 +405,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 10 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -416,6 +413,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -538,78 +538,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $resolve-propertyaccess/Class#constructor (; 13 ;) (param $0 i32) (result i32) local.get $0 @@ -652,7 +612,7 @@ call $~lib/number/I32#toString local.tee $0 i32.const 480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -666,7 +626,7 @@ call $~lib/number/I32#toString local.tee $1 i32.const 592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -680,7 +640,7 @@ call $~lib/number/I32#toString local.tee $2 i32.const 624 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -694,7 +654,7 @@ call $~lib/number/I32#toString local.tee $3 i32.const 656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -708,7 +668,7 @@ call $~lib/number/I32#toString local.tee $4 i32.const 688 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -722,7 +682,7 @@ call $~lib/number/I32#toString local.tee $5 i32.const 720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -736,7 +696,7 @@ call $~lib/number/I32#toString local.tee $6 i32.const 752 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -750,7 +710,7 @@ call $~lib/number/I32#toString local.tee $7 i32.const 784 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -764,7 +724,7 @@ call $~lib/number/I32#toString local.tee $8 i32.const 816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -782,7 +742,7 @@ call $~lib/number/I32#toString local.tee $10 i32.const 848 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 93396ae63a..648059d6cd 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1270,25 +1270,9 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -2344,7 +2328,7 @@ call $~lib/rt/pure/__retain local.tee $3 i32.const 1232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2417,7 +2401,7 @@ end local.get $1 i32.const 2464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 99ff6aff19..f31471c6fc 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1883,78 +1883,38 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 21 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 21 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/util/number/genDigits (; 22 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) @@ -4720,7 +4680,7 @@ call $~lib/number/I32#toString local.tee $0 i32.const 640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4740,7 +4700,7 @@ call $~lib/number/F64#toString local.tee $1 i32.const 1872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index a3f5122f21..f1c7bec8ed 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -301,37 +301,23 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:resolve-unary (; 6 ;) (local $0 i32) @@ -342,7 +328,7 @@ i32.const -1 call $~lib/util/number/itoa32 i32.const 1072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -355,7 +341,7 @@ i32.const 1 call $~lib/util/number/itoa32 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -372,7 +358,7 @@ global.get $resolve-unary/a call $~lib/util/number/itoa32 i32.const 1184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -389,7 +375,7 @@ global.get $resolve-unary/a call $~lib/util/number/itoa32 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -404,7 +390,7 @@ global.get $resolve-unary/a select i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -419,7 +405,7 @@ global.get $resolve-unary/a select i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -434,7 +420,7 @@ i32.xor call $~lib/util/number/itoa32 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -452,7 +438,7 @@ local.get $0 call $~lib/util/number/itoa32 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -470,7 +456,7 @@ local.get $0 call $~lib/util/number/itoa32 i32.const 1184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -486,7 +472,7 @@ global.set $resolve-unary/foo i32.const 1312 i32.const 1312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -498,7 +484,7 @@ end i32.const 1344 i32.const 1344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -510,7 +496,7 @@ end i32.const 1376 i32.const 1376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -522,7 +508,7 @@ end i32.const 1408 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -566,7 +552,7 @@ global.set $resolve-unary/bar i32.const 1440 i32.const 1440 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -578,7 +564,7 @@ end i32.const 1472 i32.const 1472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -590,7 +576,7 @@ end i32.const 1504 i32.const 1504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -602,7 +588,7 @@ end i32.const 1536 i32.const 1536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/resolve-unary.ts b/tests/compiler/resolve-unary.ts index ff598b7f60..810ac6600a 100644 --- a/tests/compiler/resolve-unary.ts +++ b/tests/compiler/resolve-unary.ts @@ -131,19 +131,19 @@ assert( class Bar { // static inc/dec don't reassign and can have different return type @operator.prefix("++") - static prefix_inc(a: Foo): string { + static prefix_inc(a: Bar): string { return "++i"; } @operator.prefix("--") - static prefix_dec(a: Foo): string { + static prefix_dec(a: Bar): string { return "--i"; } @operator.postfix("++") - static postfix_inc(a: Foo): string { + static postfix_inc(a: Bar): string { return "i++"; } @operator.postfix("--") - static postfix_dec(a: Foo): string { + static postfix_dec(a: Bar): string { return "i--"; } } diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index c9b0349f6c..407b901cdb 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -404,10 +404,7 @@ local.get $0 call $~lib/util/number/itoa ) - (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 10 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -415,6 +412,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -537,78 +537,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/number/Bool#toString (; 13 ;) (param $0 i32) (result i32) local.get $0 @@ -770,7 +730,7 @@ call $~lib/number/I32#toString local.tee $0 i32.const 480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -784,7 +744,7 @@ call $~lib/number/I32#toString local.tee $1 i32.const 560 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -802,7 +762,7 @@ call $~lib/number/I32#toString local.tee $2 i32.const 592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -820,7 +780,7 @@ call $~lib/number/I32#toString local.tee $3 i32.const 560 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -835,7 +795,7 @@ call $~lib/number/Bool#toString local.tee $4 i32.const 656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -851,7 +811,7 @@ call $~lib/number/Bool#toString local.tee $5 i32.const 624 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -867,7 +827,7 @@ call $~lib/number/I32#toString local.tee $6 i32.const 688 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -886,7 +846,7 @@ call $~lib/number/I32#toString local.tee $7 i32.const 560 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -905,7 +865,7 @@ call $~lib/number/I32#toString local.tee $8 i32.const 592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -924,7 +884,7 @@ call $~lib/string/String#toString local.tee $10 i32.const 720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -940,7 +900,7 @@ call $~lib/string/String#toString local.tee $12 i32.const 752 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1016,7 +976,7 @@ call $~lib/string/String#toString local.tee $18 i32.const 784 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1032,7 +992,7 @@ call $~lib/string/String#toString local.tee $20 i32.const 816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1113,7 +1073,7 @@ call $~lib/string/String#toString local.tee $26 i32.const 848 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1129,7 +1089,7 @@ call $~lib/string/String#toString local.tee $28 i32.const 880 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1145,7 +1105,7 @@ call $~lib/string/String#toString local.tee $30 i32.const 912 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1161,7 +1121,7 @@ call $~lib/string/String#toString local.tee $32 i32.const 944 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 21b3bae899..a34f07ad89 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -1696,68 +1696,49 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.__concat (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/string/String#concat (result i32) + block $__inlined_func$~lib/string/String#concat local.get $0 i32.const 1424 local.get $0 select - local.set $2 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - local.get $0 - i32.const 1424 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 1424 - local.set $0 - end - local.get $2 + local.tee $3 call $~lib/string/String#get:length i32.const 1 i32.shl - local.tee $3 - local.get $0 + local.tee $2 + local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl local.tee $4 i32.add - local.tee $1 + local.tee $0 i32.eqz if - local.get $0 - call $~lib/rt/pure/__release i32.const 1344 + local.set $0 br $__inlined_func$~lib/string/String#concat end - local.get $1 + local.get $0 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $1 - local.get $2 + local.tee $0 local.get $3 + local.get $2 call $~lib/memory/memory.copy - local.get $1 - local.get $3 - i32.add local.get $0 + local.get $2 + i32.add + local.get $1 local.get $4 call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__release - local.get $1 end + local.get $0 ) (func $start:retain-release-sanity (; 26 ;) (local $0 i32) @@ -1826,7 +1807,7 @@ if i32.const 1296 i32.const 1088 - i32.const 299 + i32.const 302 i32.const 21 call $~lib/builtins/abort unreachable @@ -1992,10 +1973,10 @@ call $~lib/rt/pure/__release i32.const 1360 i32.const 1392 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 i32.const 1456 - call $~lib/string/String.__concat + call $~lib/string/String._add local.get $3 call $~lib/rt/pure/__release call $~lib/rt/pure/__release diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 32efaec640..f6be0eff63 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -1703,7 +1703,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -3304,7 +3304,7 @@ if i32.const 288 i32.const 80 - i32.const 299 + i32.const 302 i32.const 21 call $~lib/builtins/abort unreachable @@ -3337,7 +3337,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -3415,7 +3415,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -3531,77 +3531,57 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 416 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 336 call $~lib/rt/pure/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 ) - (func $~lib/string/String.__concat (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 35 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -3730,13 +3710,13 @@ local.set $0 local.get $0 i32.const 384 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $1 call $~lib/rt/pure/__retain local.set $2 local.get $2 i32.const 448 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 drop local.get $0 diff --git a/tests/compiler/retain-release.ts b/tests/compiler/retain-release.ts index bc4177571c..14d3e28117 100644 --- a/tests/compiler/retain-release.ts +++ b/tests/compiler/retain-release.ts @@ -105,7 +105,7 @@ export function newRef(): void { // __release(TEMP) } -var glo: Ref; +var glo: Ref | null; export function assignGlobal(): void { diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index f0ae796387..269822752d 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -9,7 +9,6 @@ (data (i32.const 1088) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 1136) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") (data (i32.const 1252) "\01\00\00\00\01") - (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") (export "memory" (memory $0)) (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) @@ -24,7 +23,7 @@ if i32.const 1040 i32.const 1104 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -41,7 +40,7 @@ if i32.const 1152 i32.const 1104 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -59,7 +58,7 @@ if i32.const 1040 i32.const 1104 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index fcfdef600b..07f00528a1 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -11,7 +11,6 @@ (data (i32.const 80) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 128) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") (data (i32.const 240) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 256) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (table $0 1 funcref) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) @@ -45,7 +44,7 @@ if i32.const 32 i32.const 96 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -61,7 +60,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -86,7 +85,7 @@ if i32.const 32 i32.const 96 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -135,7 +134,7 @@ if i32.const 32 i32.const 96 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -151,7 +150,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -315,41 +314,22 @@ local.get $1 call $~lib/rt/stub/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 272 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - local.set $1 - end local.get $0 call $~lib/string/String#get:length - local.set $5 + local.set $3 local.get $2 - local.tee $3 - i32.const 0 local.tee $4 - local.get $3 + i32.const 0 + local.tee $5 local.get $4 + local.get $5 i32.gt_s select - local.tee $3 - local.get $5 local.tee $4 local.get $3 + local.tee $5 local.get $4 + local.get $5 i32.lt_s select local.set $6 @@ -359,14 +339,14 @@ local.get $7 local.get $6 i32.add - local.get $5 + local.get $3 i32.gt_s if i32.const 0 - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $4 return end local.get $0 @@ -376,10 +356,10 @@ local.get $7 call $~lib/util/string/compareImpl i32.eqz - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $4 ) (func $std/array-access/stringArrayMethodCall (; 14 ;) (param $0 i32) (result i32) (local $1 i32) @@ -420,7 +400,7 @@ if i32.const 32 i32.const 96 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -436,7 +416,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index f2a4ba95e1..e19e9ad01f 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -43,7 +43,7 @@ if i32.const 1168 i32.const 1232 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -62,7 +62,7 @@ if i32.const 1168 i32.const 1232 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index ff6012dd5b..1516d20c67 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -66,7 +66,7 @@ if i32.const 160 i32.const 224 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -99,7 +99,7 @@ if i32.const 160 i32.const 224 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 53f5b53b95..fdd1098e9e 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1501,7 +1501,7 @@ if i32.const 1040 i32.const 1088 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -1857,7 +1857,7 @@ if i32.const 1504 i32.const 1088 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1996,7 +1996,7 @@ if i32.const 1504 i32.const 1088 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -2318,7 +2318,7 @@ if i32.const 1984 i32.const 1088 - i32.const 299 + i32.const 302 i32.const 21 call $~lib/builtins/abort unreachable @@ -2358,7 +2358,7 @@ if i32.const 1040 i32.const 1088 - i32.const 229 + i32.const 232 i32.const 60 call $~lib/builtins/abort unreachable @@ -2792,7 +2792,7 @@ if i32.const 1504 i32.const 1088 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -2807,7 +2807,7 @@ call $~lib/rt/pure/__release i32.const 4928 i32.const 1088 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -2900,7 +2900,7 @@ if i32.const 1504 i32.const 1088 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -2922,7 +2922,7 @@ if i32.const 1504 i32.const 1088 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -3347,7 +3347,7 @@ if i32.const 1504 i32.const 1088 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -4658,7 +4658,7 @@ if i32.const 1504 i32.const 1088 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5262,7 +5262,7 @@ if i32.const 1504 i32.const 1088 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -5826,25 +5826,9 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/string/String.__eq (; 124 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 124 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -5860,68 +5844,49 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/string/String.__concat (; 125 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 125 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/string/String#concat (result i32) + block $__inlined_func$~lib/string/String#concat local.get $0 i32.const 6176 local.get $0 select - local.set $2 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - local.get $0 - i32.const 6176 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 6176 - local.set $0 - end - local.get $2 + local.tee $3 call $~lib/string/String#get:length i32.const 1 i32.shl - local.tee $3 - local.get $0 + local.tee $2 + local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl local.tee $4 i32.add - local.tee $1 + local.tee $0 i32.eqz if - local.get $0 - call $~lib/rt/pure/__release i32.const 6064 + local.set $0 br $__inlined_func$~lib/string/String#concat end - local.get $1 + local.get $0 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $1 - local.get $2 + local.tee $0 local.get $3 + local.get $2 call $~lib/memory/memory.copy - local.get $1 - local.get $3 - i32.add local.get $0 + local.get $2 + i32.add + local.get $1 local.get $4 call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__release - local.get $1 end + local.get $0 ) (func $std/array/createRandomStringArray (; 126 ;) (result i32) (local $0 i32) @@ -6031,7 +5996,7 @@ call $~lib/rt/pure/__retain end local.tee $6 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 local.tee $1 local.get $0 @@ -7882,171 +7847,192 @@ end local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String | null> (; 144 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinStringArray (; 144 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $8 i32.const 0 i32.lt_s if i32.const 6064 return end - local.get $6 + local.get $8 i32.eqz if local.get $0 i32.load - local.tee $5 - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - end - local.get $5 + local.tee $0 if (result i32) - local.get $5 + local.get $0 call $~lib/rt/pure/__retain else i32.const 6064 end - local.get $5 - call $~lib/rt/pure/__release return end - i32.const 6064 - local.set $1 - local.get $2 - local.tee $4 - call $~lib/string/String#get:length - local.set $8 loop $for-loop|0 local.get $5 - local.get $6 + local.get $1 i32.lt_s if + local.get $3 + local.set $4 + local.get $4 local.get $0 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.tee $2 - local.get $3 + local.tee $3 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 + if + local.get $3 + call $~lib/string/String#get:length + local.get $7 + i32.add + local.set $7 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $7 + local.get $8 + local.get $2 + call $~lib/string/String#get:length + local.tee $7 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/tlsf/__alloc + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $8 + i32.lt_s + if + local.get $3 + local.set $1 + local.get $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load local.tee $3 + i32.ne if local.get $3 call $~lib/rt/pure/__retain - local.tee $2 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 + local.set $3 local.get $1 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 end - local.get $8 + local.get $3 if - local.get $1 - local.tee $2 local.get $4 - call $~lib/string/String.__concat - local.tee $7 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $3 + call $~lib/string/String#get:length local.tee $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $6 + i32.add + local.set $6 + end + local.get $7 + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end local.get $7 - call $~lib/rt/pure/__release + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $6 + local.get $7 + i32.add + local.set $6 end local.get $5 i32.const 1 i32.add local.set $5 - br $for-loop|0 + br $for-loop|1 end end + local.get $3 + local.set $1 + local.get $1 local.get $0 - local.get $6 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.tee $2 - local.get $3 + local.tee $3 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $1 call $~lib/rt/pure/__release end - local.get $2 + local.get $3 local.tee $0 if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $5 - local.tee $2 - local.get $1 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + call $~lib/memory/memory.copy end + local.get $4 + call $~lib/rt/pure/__retain local.get $0 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/array/Array<~lib/string/String | null>#join (; 145 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -8054,7 +8040,7 @@ local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/string/String | null> + call $~lib/util/string/joinStringArray ) (func $~lib/util/string/joinReferenceArray (; 146 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -8124,7 +8110,7 @@ local.get $1 local.get $1 i32.const 8048 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $2 i32.ne @@ -8145,7 +8131,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -8189,7 +8175,7 @@ local.get $1 local.get $1 i32.const 8048 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 local.tee $2 i32.ne @@ -9092,7 +9078,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9114,7 +9100,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9162,7 +9148,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -9400,7 +9386,7 @@ local.get $3 call $~lib/array/Array#toString local.tee $6 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9423,7 +9409,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9469,7 +9455,7 @@ local.get $0 call $~lib/array/Array#toString local.tee $3 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -9568,7 +9554,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9590,7 +9576,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9638,7 +9624,7 @@ local.get $1 local.get $1 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -9740,7 +9726,7 @@ local.get $3 call $~lib/array/Array<~lib/array/Array>#toString local.tee $6 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $8 local.tee $2 i32.ne @@ -9763,7 +9749,7 @@ local.get $1 local.tee $2 i32.const 6304 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $1 local.get $2 @@ -9809,7 +9795,7 @@ local.get $0 call $~lib/array/Array<~lib/array/Array>#toString local.tee $3 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $2 i32.ne @@ -11456,7 +11442,7 @@ if i32.const 1984 i32.const 1088 - i32.const 360 + i32.const 363 i32.const 21 call $~lib/builtins/abort unreachable @@ -11950,7 +11936,7 @@ local.get $55 i32.load offset=4 local.set $57 - loop $while-continue|022 + loop $while-continue|021 local.get $1 local.get $58 i32.lt_s @@ -11968,7 +11954,7 @@ i32.const 1 i32.add local.set $1 - br $while-continue|022 + br $while-continue|021 end end i32.const -1 @@ -12014,7 +12000,7 @@ local.get $56 i32.load offset=4 local.set $55 - loop $while-continue|023 + loop $while-continue|022 local.get $1 local.get $57 i32.lt_s @@ -12032,7 +12018,7 @@ i32.const 1 i32.add local.set $1 - br $while-continue|023 + br $while-continue|022 end end i32.const -1 @@ -12214,7 +12200,7 @@ local.get $0 i32.load offset=4 local.set $56 - loop $while-continue|024 + loop $while-continue|023 local.get $58 local.get $57 i32.lt_s @@ -12242,7 +12228,7 @@ i32.const 1 i32.add local.set $58 - br $while-continue|024 + br $while-continue|023 end end i32.const 0 @@ -12281,7 +12267,7 @@ local.get $57 i32.load offset=4 local.set $42 - loop $while-continue|025 + loop $while-continue|024 local.get $58 local.get $55 i32.lt_s @@ -12309,7 +12295,7 @@ i32.const 1 i32.add local.set $58 - br $while-continue|025 + br $while-continue|024 end end i32.const 0 @@ -13970,7 +13956,7 @@ local.tee $1 i32.load offset=4 local.set $54 - loop $for-loop|043 + loop $for-loop|042 local.get $58 local.get $56 local.get $57 @@ -14003,7 +13989,7 @@ i32.const 1 i32.add local.set $58 - br $for-loop|043 + br $for-loop|042 end end local.get $1 @@ -15066,7 +15052,7 @@ i32.const 0 local.get $58 i32.load offset=12 - local.tee $53 + local.tee $51 local.get $57 i32.load offset=12 i32.ne @@ -15080,19 +15066,34 @@ drop loop $for-loop|02 local.get $1 - local.get $53 + local.get $51 i32.lt_s if local.get $58 local.get $1 call $~lib/array/Array#__get local.tee $56 + local.set $53 local.get $57 local.get $1 call $~lib/array/Array#__get local.tee $54 - call $~lib/string/String.__eq + local.set $52 + local.get $56 + i32.eqz + local.get $54 i32.eqz + i32.or + if (result i32) + local.get $52 + local.get $53 + i32.ne + else + local.get $53 + local.get $52 + call $~lib/string/String#_eq + i32.eqz + end if local.get $56 call $~lib/rt/pure/__release @@ -15150,7 +15151,7 @@ local.tee $58 local.get $58 i32.const 6336 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15171,7 +15172,7 @@ call $~lib/array/Array#join local.tee $52 i32.const 6448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15192,7 +15193,7 @@ call $~lib/array/Array#join local.tee $50 i32.const 6448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15213,7 +15214,7 @@ call $~lib/array/Array#join local.tee $48 i32.const 6608 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15238,7 +15239,7 @@ local.set $46 local.get $57 i32.const 7888 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15259,7 +15260,7 @@ call $~lib/array/Array<~lib/string/String | null>#join local.tee $44 i32.const 7984 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15292,7 +15293,7 @@ call $~lib/array/Array#join local.tee $43 i32.const 8096 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15322,7 +15323,7 @@ call $~lib/array/Array#join local.tee $47 i32.const 8176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15397,7 +15398,7 @@ local.tee $1 local.get $1 i32.const 6064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15414,7 +15415,7 @@ local.set $45 local.get $1 i32.const 7984 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15431,7 +15432,7 @@ local.set $44 local.get $1 i32.const 8368 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15448,7 +15449,7 @@ local.set $43 local.get $1 i32.const 8400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15473,7 +15474,7 @@ local.set $47 local.get $1 i32.const 8464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15498,7 +15499,7 @@ local.set $40 local.get $1 i32.const 8528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15523,7 +15524,7 @@ local.set $39 local.get $1 i32.const 8624 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15548,7 +15549,7 @@ local.set $38 local.get $1 i32.const 8736 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15571,7 +15572,7 @@ local.set $35 local.get $1 i32.const 8896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15594,7 +15595,7 @@ local.set $30 local.get $1 i32.const 9040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15637,7 +15638,7 @@ local.set $29 local.get $58 i32.const 9136 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15680,7 +15681,7 @@ local.set $28 local.get $57 i32.const 9136 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15724,7 +15725,7 @@ local.set $32 local.get $33 i32.const 7984 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 8cda8d36f1..2602e77fae 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -11,7 +11,7 @@ assert(offsetof("byteLength") == offsetof("byteLength")) function internalCapacity(array: Array): i32 { // the memory region used by the backing buffer might still be larger in that the ArrayBuffer // pre-allocates a power of 2 sized buffer itself and reuses it as long as it isn't exceeded. - var buffer: ArrayBuffer = array.buffer; + var buffer: ArrayBuffer = changetype(array).buffer; return buffer.byteLength >> alignof(); } diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 3421557e23..f0176fc89b 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -1904,7 +1904,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -1975,7 +1975,9 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 1 + local.get $0 + i32.const 0 + i32.ne if (result i32) local.get $0 i32.const 0 @@ -1987,6 +1989,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $std/array/Ref#constructor (; 24 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -2008,6 +2011,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 0 if (result i32) local.get $0 @@ -2020,6 +2025,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/arraybuffer/ArrayBufferView#constructor (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2114,6 +2120,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 0 if (result i32) local.get $0 @@ -2126,6 +2134,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/array/Array.isArray (; 29 ;) (param $0 i32) (result i32) i32.const 0 @@ -2135,6 +2144,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 0 if (result i32) local.get $0 @@ -2147,12 +2158,15 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/array/Array.isArray<~lib/array/Array> (; 31 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 + local.get $0 + drop i32.const 1 if (result i32) local.get $0 @@ -2165,6 +2179,7 @@ local.get $0 call $~lib/rt/pure/__release local.get $1 + return ) (func $~lib/util/memory/memcpy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3556,7 +3571,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -3759,7 +3774,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -4183,7 +4198,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -4206,7 +4221,7 @@ if i32.const 976 i32.const 80 - i32.const 299 + i32.const 302 i32.const 21 call $~lib/builtins/abort unreachable @@ -4317,7 +4332,7 @@ call $~lib/rt/pure/__release i32.const 32 i32.const 80 - i32.const 229 + i32.const 232 i32.const 60 call $~lib/builtins/abort unreachable @@ -4617,7 +4632,7 @@ if i32.const 976 i32.const 80 - i32.const 360 + i32.const 363 i32.const 21 call $~lib/builtins/abort unreachable @@ -5324,7 +5339,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5340,7 +5355,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 80 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -5478,7 +5493,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5511,7 +5526,7 @@ if i32.const 496 i32.const 80 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -6232,7 +6247,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -8163,7 +8178,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -9487,7 +9502,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -9600,7 +9615,7 @@ call $~lib/rt/pure/__release i32.const 496 i32.const 80 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -9883,7 +9898,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -9899,7 +9914,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 80 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -10010,7 +10025,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -10138,7 +10153,7 @@ call $~lib/rt/pure/__release i32.const 496 i32.const 80 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -10414,7 +10429,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -10430,7 +10445,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 80 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -10721,7 +10736,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -10972,15 +10987,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -11081,94 +11094,49 @@ local.get $1 call $std/array/assertSorted<~lib/string/String | null> ) - (func $~lib/string/String.__eq (; 216 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 216 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) - (func $~lib/string/String.__ne (; 217 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_ne (; 217 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 local.get $1 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz local.set $2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $2 @@ -11179,6 +11147,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -11232,11 +11201,24 @@ local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get local.tee $5 + local.tee $7 + i32.eqz local.get $1 local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get local.tee $6 - call $~lib/string/String.__ne + local.tee $8 + i32.eqz + i32.or + if (result i32) + local.get $7 + local.get $8 + i32.ne + else + local.get $7 + local.get $8 + call $~lib/string/String#_ne + end if i32.const 0 local.set $7 @@ -11282,7 +11264,7 @@ if i32.const 32 i32.const 80 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -11380,77 +11362,57 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 5168 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 5056 call $~lib/rt/pure/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 ) - (func $~lib/string/String.__concat (; 222 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 222 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -11506,7 +11468,7 @@ i32.trunc_f64_s call $~lib/string/String#charAt local.tee $5 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $6 local.tee $7 local.get $1 @@ -11581,7 +11543,7 @@ call $~lib/rt/pure/__release i32.const 496 i32.const 80 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -11835,7 +11797,7 @@ if i32.const 496 i32.const 80 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -11851,7 +11813,7 @@ call $~lib/rt/pure/__release i32.const 3920 i32.const 80 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -11968,15 +11930,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -14748,8 +14708,6 @@ local.get $8 local.set $6 local.get $6 - i32.const 0 - i32.ne if local.get $5 local.get $6 @@ -14808,8 +14766,6 @@ local.get $9 local.set $6 local.get $6 - i32.const 0 - i32.ne if local.get $6 call $~lib/string/String#get:length @@ -14873,8 +14829,6 @@ local.get $8 local.set $6 local.get $6 - i32.const 0 - i32.ne if local.get $12 local.get $10 @@ -14973,8 +14927,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $std/array/Ref#toString @@ -15023,14 +14975,12 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $std/array/Ref#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -15054,7 +15004,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -15099,14 +15049,12 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $std/array/Ref#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -15207,8 +15155,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $std/array/Ref#toString @@ -15257,14 +15203,12 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $std/array/Ref#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -15288,7 +15232,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -15333,14 +15277,12 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $std/array/Ref#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -16798,8 +16740,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array#toString @@ -16848,14 +16788,12 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -16879,7 +16817,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -16924,14 +16862,12 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -17268,8 +17204,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array#toString @@ -17318,14 +17252,12 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -17349,7 +17281,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -17394,14 +17326,12 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -17512,8 +17442,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array#toString @@ -17562,14 +17490,12 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -17593,7 +17519,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -17638,14 +17564,12 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -17751,8 +17675,6 @@ local.get $4 local.set $5 local.get $5 - i32.const 0 - i32.ne if (result i32) local.get $5 call $~lib/array/Array<~lib/array/Array>#toString @@ -17801,14 +17723,12 @@ local.get $9 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array<~lib/array/Array>#toString local.tee $9 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $11 local.get $7 @@ -17832,7 +17752,7 @@ if local.get $7 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $10 local.tee $12 local.get $7 @@ -17877,14 +17797,12 @@ local.get $11 local.set $5 local.get $5 - i32.const 0 - i32.ne if local.get $7 local.get $5 call $~lib/array/Array<~lib/array/Array>#toString local.tee $11 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.tee $9 local.get $7 @@ -23184,7 +23102,7 @@ call $~lib/array/Array#join local.tee $29 i32.const 5328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23205,7 +23123,7 @@ call $~lib/array/Array#join local.tee $31 i32.const 5856 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23226,7 +23144,7 @@ call $~lib/array/Array#join local.tee $36 i32.const 5856 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23247,7 +23165,7 @@ call $~lib/array/Array#join local.tee $54 i32.const 6016 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23268,7 +23186,7 @@ call $~lib/array/Array#join local.tee $39 i32.const 7296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23289,7 +23207,7 @@ call $~lib/array/Array<~lib/string/String | null>#join local.tee $38 i32.const 7392 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23330,7 +23248,7 @@ call $~lib/array/Array#join local.tee $43 i32.const 7504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23367,7 +23285,7 @@ call $~lib/array/Array#join local.tee $44 i32.const 7584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23441,7 +23359,7 @@ call $~lib/array/Array#toString local.tee $44 i32.const 5056 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23455,7 +23373,7 @@ call $~lib/array/Array#toString local.tee $42 i32.const 7392 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23469,7 +23387,7 @@ call $~lib/array/Array#toString local.tee $39 i32.const 7776 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23483,7 +23401,7 @@ call $~lib/array/Array#toString local.tee $40 i32.const 7808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23503,7 +23421,7 @@ call $~lib/array/Array#toString local.tee $54 i32.const 7872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23523,7 +23441,7 @@ call $~lib/array/Array#toString local.tee $36 i32.const 7936 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23543,7 +23461,7 @@ call $~lib/array/Array#toString local.tee $31 i32.const 8032 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23563,7 +23481,7 @@ call $~lib/array/Array#toString local.tee $29 i32.const 8144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23584,7 +23502,7 @@ call $~lib/array/Array<~lib/string/String | null>#toString local.tee $48 i32.const 8304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23604,7 +23522,7 @@ call $~lib/array/Array<~lib/string/String | null>#toString local.tee $51 i32.const 8448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23646,7 +23564,7 @@ call $~lib/array/Array<~lib/array/Array>#toString local.tee $30 i32.const 8544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23688,7 +23606,7 @@ call $~lib/array/Array<~lib/array/Array>#toString local.tee $26 i32.const 8544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -23735,7 +23653,7 @@ call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString local.tee $28 i32.const 7392 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 9545b0df7e..2b4099e963 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -1680,7 +1680,7 @@ if i32.const 32 i32.const 80 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -3046,8 +3046,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 @@ -3071,8 +3070,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 @@ -3094,8 +3092,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 @@ -3117,8 +3114,7 @@ call $~lib/rt/pure/__retain local.set $0 local.get $0 - i32.const 0 - i32.eq + i32.eqz if i32.const 0 local.set $1 diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 18b53a3def..6f625fe122 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -36,8 +36,6 @@ i32.const -2128831035 local.set $1 local.get $0 - i32.const 0 - i32.ne if i32.const 0 local.set $2 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index c445e26c40..8ca421a769 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1279,7 +1279,7 @@ if i32.const 1200 i32.const 1248 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -2055,7 +2055,7 @@ if i32.const 1520 i32.const 1472 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -2111,7 +2111,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -2214,7 +2214,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -2285,7 +2285,7 @@ if i32.const 1520 i32.const 1472 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -2443,7 +2443,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -3346,7 +3346,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -3887,7 +3887,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -4553,7 +4553,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5142,7 +5142,7 @@ if i32.const 1520 i32.const 1472 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -5202,7 +5202,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -5889,7 +5889,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -6434,7 +6434,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -7103,7 +7103,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -7930,7 +7930,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -8895,7 +8895,7 @@ if i32.const 1520 i32.const 1472 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -8955,7 +8955,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -9142,7 +9142,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -9972,7 +9972,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -10861,7 +10861,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -10947,7 +10947,7 @@ if i32.const 1520 i32.const 1472 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -11515,7 +11515,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -12087,7 +12087,7 @@ if i32.const 1200 i32.const 1472 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -12173,7 +12173,7 @@ if i32.const 1520 i32.const 1472 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -12777,7 +12777,7 @@ if i32.const 1520 i32.const 1472 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index c166b63fde..f7b554df92 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -1696,7 +1696,7 @@ if i32.const 192 i32.const 240 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -2186,7 +2186,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -3770,7 +3770,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -3882,7 +3882,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -3970,7 +3970,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -4236,7 +4236,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -4265,7 +4265,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5987,7 +5987,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -6075,7 +6075,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -6334,7 +6334,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -7702,7 +7702,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -7790,7 +7790,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -8049,7 +8049,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -9415,7 +9415,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -9503,7 +9503,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -9762,7 +9762,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -11803,7 +11803,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -11891,7 +11891,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -12150,7 +12150,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -13540,7 +13540,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -13628,7 +13628,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -13887,7 +13887,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -15200,7 +15200,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -15288,7 +15288,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -15547,7 +15547,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -16864,7 +16864,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -16952,7 +16952,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -17211,7 +17211,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -18531,7 +18531,7 @@ if i32.const 192 i32.const 464 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -18619,7 +18619,7 @@ if i32.const 512 i32.const 464 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -18878,7 +18878,7 @@ if i32.const 512 i32.const 464 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index afbee6899b..3803f4177a 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -206,35 +206,22 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 + block $__inlined_func$~lib/string/String#_eq (result i32) + i32.const 0 local.get $0 i32.load offset=4 local.tee $1 + call $~lib/string/String#get:length + local.tee $0 i32.const 1040 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq + call $~lib/string/String#get:length + i32.ne + br_if $__inlined_func$~lib/string/String#_eq drop - block $folding-inner0 - i32.const 0 - i32.const 1 - local.get $1 - select - br_if $folding-inner0 - local.get $1 - call $~lib/string/String#get:length - local.tee $0 - i32.const 1040 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $1 - local.get $0 - call $~lib/util/string/compareImpl - i32.eqz - br $__inlined_func$~lib/string/String.__eq - end - i32.const 0 + local.get $1 + local.get $0 + call $~lib/util/string/compareImpl + i32.eqz end i32.eqz if diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 5a897adcfe..7974fe163a 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -126,10 +126,7 @@ (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 5 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 4 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -137,6 +134,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 5 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 6 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -259,78 +259,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $std/object-literal/bar (; 8 ;) (param $0 i32) local.get $0 @@ -352,7 +312,7 @@ local.get $0 i32.load offset=4 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 6d33c33dac..e082520f0e 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -1,6 +1,6 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -148,40 +148,41 @@ end i32.const 0 ) - (func $~lib/object/Object.is<~lib/string/String> (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 + local.get $0 + call $~lib/string/String#get:length + local.tee $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/object/Object.is<~lib/string/String | null> (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.eqz + local.get $1 + i32.eqz + i32.or + if (result i32) local.get $0 local.get $1 i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - br $__inlined_func$~lib/string/String.__eq - end - i32.const 0 + else + local.get $0 + local.get $1 + call $~lib/string/String#_eq end ) - (func $start:std/object (; 7 ;) + (func $start:std/object (; 8 ;) f64.const 0 f64.const 0 call $~lib/object/Object.is @@ -562,7 +563,7 @@ end i32.const 1088 i32.const 1088 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String#_eq i32.const 1 i32.ne if @@ -575,7 +576,7 @@ end i32.const 1088 i32.const 1120 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String#_eq if i32.const 0 i32.const 1040 @@ -586,7 +587,7 @@ end i32.const 1088 i32.const 1152 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/string/String#_eq if i32.const 0 i32.const 1040 @@ -597,7 +598,7 @@ end i32.const 0 i32.const 0 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/object/Object.is<~lib/string/String | null> i32.const 1 i32.ne if @@ -610,7 +611,7 @@ end i32.const 1184 i32.const 0 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/object/Object.is<~lib/string/String | null> if i32.const 0 i32.const 1040 @@ -621,7 +622,7 @@ end i32.const 0 i32.const 1184 - call $~lib/object/Object.is<~lib/string/String> + call $~lib/object/Object.is<~lib/string/String | null> if i32.const 0 i32.const 1040 @@ -631,7 +632,7 @@ unreachable end ) - (func $~start (; 8 ;) + (func $~start (; 9 ;) call $start:std/object ) ) diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index e7711232cf..a02b0563eb 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -77,10 +77,7 @@ (func $~lib/rt/stub/__retain (; 5 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 6 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 7 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 6 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -88,6 +85,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 7 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -210,78 +210,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/object/Object.is<~lib/string/String> (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -293,7 +253,7 @@ local.set $1 local.get $0 local.get $1 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $2 local.get $0 call $~lib/rt/stub/__release @@ -303,6 +263,7 @@ ) (func $~lib/object/Object.is<~lib/string/String | null> (; 11 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -310,8 +271,21 @@ call $~lib/rt/stub/__retain local.set $1 local.get $0 + local.tee $2 + i32.eqz local.get $1 - call $~lib/string/String.__eq + local.tee $3 + i32.eqz + i32.or + if (result i32) + local.get $2 + local.get $3 + i32.eq + else + local.get $2 + local.get $3 + call $~lib/string/String#_eq + end local.set $2 local.get $0 call $~lib/rt/stub/__release diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 2d8da9dc2e..40e7a2ea8f 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1276,7 +1276,7 @@ if i32.const 1200 i32.const 1248 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -2046,7 +2046,7 @@ if i32.const 1408 i32.const 1360 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -2090,7 +2090,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -2187,7 +2187,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -2854,7 +2854,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -2951,7 +2951,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -3662,7 +3662,7 @@ if i32.const 1408 i32.const 1360 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -3710,7 +3710,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -3810,7 +3810,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -4481,7 +4481,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -4581,7 +4581,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5300,7 +5300,7 @@ if i32.const 1408 i32.const 1360 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -5348,7 +5348,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -5448,7 +5448,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5872,7 +5872,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -6669,7 +6669,7 @@ if i32.const 1408 i32.const 1360 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -6717,7 +6717,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -6817,7 +6817,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -7243,7 +7243,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -7956,7 +7956,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -8047,7 +8047,7 @@ if i32.const 1408 i32.const 1360 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -8089,7 +8089,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -8784,7 +8784,7 @@ if i32.const 1200 i32.const 1360 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -8875,7 +8875,7 @@ if i32.const 1408 i32.const 1360 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -8917,7 +8917,7 @@ if i32.const 1408 i32.const 1360 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index cd4f6ccebd..4217df356f 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -1691,7 +1691,7 @@ if i32.const 192 i32.const 240 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -2134,7 +2134,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -3718,7 +3718,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -3824,7 +3824,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -4670,7 +4670,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -4758,7 +4758,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -4864,7 +4864,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5728,7 +5728,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -5816,7 +5816,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -5922,7 +5922,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -6768,7 +6768,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -6856,7 +6856,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -6962,7 +6962,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -7834,7 +7834,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -7922,7 +7922,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -8028,7 +8028,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -8844,7 +8844,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -8932,7 +8932,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -9038,7 +9038,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -9944,7 +9944,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -10032,7 +10032,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -10138,7 +10138,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -10958,7 +10958,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -11046,7 +11046,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -11152,7 +11152,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -11975,7 +11975,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -12063,7 +12063,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -12169,7 +12169,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -12993,7 +12993,7 @@ if i32.const 192 i32.const 352 - i32.const 57 + i32.const 60 i32.const 60 call $~lib/builtins/abort unreachable @@ -13081,7 +13081,7 @@ if i32.const 400 i32.const 352 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -13187,7 +13187,7 @@ if i32.const 400 i32.const 352 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index d3174b39a4..42391e85a0 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -37,7 +37,7 @@ if i32.const 1360 i32.const 1424 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -639,7 +639,7 @@ if i32.const 1360 i32.const 1424 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -660,7 +660,7 @@ if i32.const 1360 i32.const 1424 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -681,7 +681,7 @@ if i32.const 1360 i32.const 1424 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 94736329f7..7476db0763 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -59,7 +59,7 @@ if i32.const 352 i32.const 416 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1837,7 +1837,7 @@ if i32.const 352 i32.const 416 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -1881,7 +1881,7 @@ if i32.const 352 i32.const 416 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1914,7 +1914,7 @@ if i32.const 352 i32.const 416 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -1958,7 +1958,7 @@ if i32.const 352 i32.const 416 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -1991,7 +1991,7 @@ if i32.const 352 i32.const 416 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable @@ -2035,7 +2035,7 @@ if i32.const 352 i32.const 416 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -2068,7 +2068,7 @@ if i32.const 352 i32.const 416 - i32.const 120 + i32.const 123 i32.const 22 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 38fc4c8cb7..b1b66e7496 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -2254,25 +2254,9 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -3000,7 +2984,7 @@ call $~lib/string/String#toUpperCase local.tee $9 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3014,7 +2998,7 @@ call $~lib/string/String#toLowerCase local.tee $10 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3028,7 +3012,7 @@ call $~lib/string/String#toUpperCase local.tee $11 i32.const 11392 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3042,7 +3026,7 @@ call $~lib/string/String#toLowerCase local.tee $12 i32.const 11488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3056,7 +3040,7 @@ call $~lib/string/String#toUpperCase local.tee $13 i32.const 11632 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3070,7 +3054,7 @@ call $~lib/string/String#toLowerCase local.tee $14 i32.const 11728 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3084,7 +3068,7 @@ call $~lib/string/String#toUpperCase local.tee $15 i32.const 11888 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3098,7 +3082,7 @@ call $~lib/string/String#toLowerCase local.tee $16 i32.const 11952 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3112,7 +3096,7 @@ call $~lib/string/String#toUpperCase local.tee $17 i32.const 12112 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3126,7 +3110,7 @@ call $~lib/string/String#toLowerCase local.tee $18 i32.const 12208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3140,7 +3124,7 @@ call $~lib/string/String#toUpperCase local.tee $19 i32.const 12400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3154,7 +3138,7 @@ call $~lib/string/String#toLowerCase local.tee $20 i32.const 12496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3168,7 +3152,7 @@ call $~lib/string/String#toUpperCase local.tee $21 i32.const 12656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3182,7 +3166,7 @@ call $~lib/string/String#toUpperCase local.tee $22 i32.const 12784 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3196,7 +3180,7 @@ call $~lib/string/String#toUpperCase local.tee $23 i32.const 12928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3210,7 +3194,7 @@ call $~lib/string/String#toUpperCase local.tee $24 i32.const 13072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3224,7 +3208,7 @@ call $~lib/string/String#toUpperCase local.tee $25 i32.const 13216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3238,7 +3222,7 @@ call $~lib/string/String#toUpperCase local.tee $26 i32.const 13344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3252,7 +3236,7 @@ call $~lib/string/String#toUpperCase local.tee $27 i32.const 13488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3266,7 +3250,7 @@ call $~lib/string/String#toUpperCase local.tee $28 i32.const 13648 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3280,7 +3264,7 @@ call $~lib/string/String#toUpperCase local.tee $29 i32.const 13872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3294,7 +3278,7 @@ call $~lib/string/String#toLowerCase local.tee $30 i32.const 14016 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3308,7 +3292,7 @@ call $~lib/string/String#toUpperCase local.tee $31 i32.const 14192 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3322,7 +3306,7 @@ call $~lib/string/String#toLowerCase local.tee $32 i32.const 14256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3336,7 +3320,7 @@ call $~lib/string/String#toUpperCase local.tee $33 i32.const 14480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3352,7 +3336,7 @@ call $~lib/string/String#toLowerCase local.tee $35 i32.const 14688 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3368,7 +3352,7 @@ call $~lib/string/String#toLowerCase local.tee $37 i32.const 14752 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3384,7 +3368,7 @@ call $~lib/string/String#toLowerCase local.tee $39 i32.const 14784 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3400,7 +3384,7 @@ call $~lib/string/String#toLowerCase local.tee $41 i32.const 15040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3416,7 +3400,7 @@ call $~lib/string/String#toUpperCase local.tee $43 i32.const 15040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3430,7 +3414,7 @@ call $~lib/string/String#toLowerCase local.tee $44 i32.const 15104 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3444,7 +3428,7 @@ call $~lib/string/String#toLowerCase local.tee $45 i32.const 15168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3458,7 +3442,7 @@ call $~lib/string/String#toLowerCase local.tee $46 i32.const 15232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3472,7 +3456,7 @@ call $~lib/string/String#toLowerCase local.tee $47 i32.const 15296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3486,7 +3470,7 @@ call $~lib/string/String#toLowerCase local.tee $48 i32.const 15360 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3500,7 +3484,7 @@ call $~lib/string/String#toLowerCase local.tee $49 i32.const 15424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3514,7 +3498,7 @@ call $~lib/string/String#toLowerCase local.tee $50 i32.const 15488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3528,7 +3512,7 @@ call $~lib/string/String#toLowerCase local.tee $51 i32.const 15552 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3542,7 +3526,7 @@ call $~lib/string/String#toLowerCase local.tee $52 i32.const 15616 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3556,7 +3540,7 @@ call $~lib/string/String#toLowerCase local.tee $53 i32.const 15680 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3570,7 +3554,7 @@ call $~lib/string/String#toLowerCase local.tee $54 i32.const 15744 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3584,7 +3568,7 @@ call $~lib/string/String#toLowerCase local.tee $55 i32.const 15808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3598,7 +3582,7 @@ call $~lib/string/String#toLowerCase local.tee $56 i32.const 15872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3612,7 +3596,7 @@ call $~lib/string/String#toLowerCase local.tee $57 i32.const 15936 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3626,7 +3610,7 @@ call $~lib/string/String#toLowerCase local.tee $58 i32.const 16000 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3640,7 +3624,7 @@ call $~lib/string/String#toLowerCase local.tee $59 i32.const 16064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3654,7 +3638,7 @@ call $~lib/string/String#toLowerCase local.tee $60 i32.const 16128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3668,7 +3652,7 @@ call $~lib/string/String#toLowerCase local.tee $61 i32.const 16192 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3682,7 +3666,7 @@ call $~lib/string/String#toLowerCase local.tee $62 i32.const 16256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3696,7 +3680,7 @@ call $~lib/string/String#toLowerCase local.tee $63 i32.const 16320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3710,7 +3694,7 @@ call $~lib/string/String#toLowerCase local.tee $64 i32.const 16384 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3724,7 +3708,7 @@ call $~lib/string/String#toLowerCase local.tee $65 i32.const 16448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3738,7 +3722,7 @@ call $~lib/string/String#toLowerCase local.tee $66 i32.const 16512 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3752,7 +3736,7 @@ call $~lib/string/String#toLowerCase local.tee $67 i32.const 16576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3766,7 +3750,7 @@ call $~lib/string/String#toLowerCase local.tee $68 i32.const 16640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3780,7 +3764,7 @@ call $~lib/string/String#toLowerCase local.tee $69 i32.const 15744 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3794,7 +3778,7 @@ call $~lib/string/String#toLowerCase local.tee $70 i32.const 16736 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3808,7 +3792,7 @@ call $~lib/string/String#toLowerCase local.tee $71 i32.const 16800 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3822,7 +3806,7 @@ call $~lib/string/String#toLowerCase local.tee $72 i32.const 16864 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3836,7 +3820,7 @@ call $~lib/string/String#toLowerCase local.tee $73 i32.const 16928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3850,7 +3834,7 @@ call $~lib/string/String#toLowerCase local.tee $74 i32.const 16992 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3864,7 +3848,7 @@ call $~lib/string/String#toLowerCase local.tee $75 i32.const 17056 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3878,7 +3862,7 @@ call $~lib/string/String#toLowerCase local.tee $76 i32.const 17120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3892,7 +3876,7 @@ call $~lib/string/String#toLowerCase local.tee $77 i32.const 17184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3906,7 +3890,7 @@ call $~lib/string/String#toLowerCase local.tee $78 i32.const 17248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3920,7 +3904,7 @@ call $~lib/string/String#toLowerCase local.tee $79 i32.const 17312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3934,7 +3918,7 @@ call $~lib/string/String#toLowerCase local.tee $80 i32.const 17376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3948,7 +3932,7 @@ call $~lib/string/String#toLowerCase local.tee $81 i32.const 17440 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3962,7 +3946,7 @@ call $~lib/string/String#toUpperCase local.tee $82 i32.const 17504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3976,7 +3960,7 @@ call $~lib/string/String#toUpperCase local.tee $83 i32.const 17536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3990,7 +3974,7 @@ call $~lib/string/String#toUpperCase local.tee $84 i32.const 17600 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4004,7 +3988,7 @@ call $~lib/string/String#toUpperCase local.tee $85 i32.const 17664 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4018,7 +4002,7 @@ call $~lib/string/String#toUpperCase local.tee $86 i32.const 17728 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4032,7 +4016,7 @@ call $~lib/string/String#toUpperCase local.tee $87 i32.const 17792 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4046,7 +4030,7 @@ call $~lib/string/String#toUpperCase local.tee $88 i32.const 17792 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4060,7 +4044,7 @@ call $~lib/string/String#toUpperCase local.tee $89 i32.const 17888 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4074,7 +4058,7 @@ call $~lib/string/String#toUpperCase local.tee $90 i32.const 17952 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4088,7 +4072,7 @@ call $~lib/string/String#toUpperCase local.tee $91 i32.const 18016 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4102,7 +4086,7 @@ call $~lib/string/String#toUpperCase local.tee $92 i32.const 18080 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4116,7 +4100,7 @@ call $~lib/string/String#toUpperCase local.tee $93 i32.const 18144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4130,7 +4114,7 @@ call $~lib/string/String#toUpperCase local.tee $94 i32.const 18208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index e83401886c..4b3bbf06ec 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -3748,78 +3748,38 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 33 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/util/string/stagedBinaryLookup (; 34 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -4624,7 +4584,7 @@ call $~lib/string/String#toUpperCase local.tee $0 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4638,7 +4598,7 @@ call $~lib/string/String#toLowerCase local.tee $1 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4652,7 +4612,7 @@ call $~lib/string/String#toUpperCase local.tee $2 i32.const 10672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4666,7 +4626,7 @@ call $~lib/string/String#toLowerCase local.tee $3 i32.const 10768 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4680,7 +4640,7 @@ call $~lib/string/String#toUpperCase local.tee $4 i32.const 10912 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4694,7 +4654,7 @@ call $~lib/string/String#toLowerCase local.tee $5 i32.const 11008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4708,7 +4668,7 @@ call $~lib/string/String#toUpperCase local.tee $6 i32.const 11168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4722,7 +4682,7 @@ call $~lib/string/String#toLowerCase local.tee $7 i32.const 11232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4736,7 +4696,7 @@ call $~lib/string/String#toUpperCase local.tee $8 i32.const 11392 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4750,7 +4710,7 @@ call $~lib/string/String#toLowerCase local.tee $9 i32.const 11488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4764,7 +4724,7 @@ call $~lib/string/String#toUpperCase local.tee $10 i32.const 11680 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4778,7 +4738,7 @@ call $~lib/string/String#toLowerCase local.tee $11 i32.const 11776 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4792,7 +4752,7 @@ call $~lib/string/String#toUpperCase local.tee $12 i32.const 11936 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4806,7 +4766,7 @@ call $~lib/string/String#toUpperCase local.tee $13 i32.const 12064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4820,7 +4780,7 @@ call $~lib/string/String#toUpperCase local.tee $14 i32.const 12208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4834,7 +4794,7 @@ call $~lib/string/String#toUpperCase local.tee $15 i32.const 12352 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4848,7 +4808,7 @@ call $~lib/string/String#toUpperCase local.tee $16 i32.const 12496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4862,7 +4822,7 @@ call $~lib/string/String#toUpperCase local.tee $17 i32.const 12624 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4876,7 +4836,7 @@ call $~lib/string/String#toUpperCase local.tee $18 i32.const 12768 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4890,7 +4850,7 @@ call $~lib/string/String#toUpperCase local.tee $19 i32.const 12928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4904,7 +4864,7 @@ call $~lib/string/String#toUpperCase local.tee $20 i32.const 13152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4918,7 +4878,7 @@ call $~lib/string/String#toLowerCase local.tee $21 i32.const 13296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4932,7 +4892,7 @@ call $~lib/string/String#toUpperCase local.tee $22 i32.const 13472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4946,7 +4906,7 @@ call $~lib/string/String#toLowerCase local.tee $23 i32.const 13536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4960,7 +4920,7 @@ call $~lib/string/String#toUpperCase local.tee $24 i32.const 13760 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4976,7 +4936,7 @@ call $~lib/string/String#toLowerCase local.tee $26 i32.const 13968 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4992,7 +4952,7 @@ call $~lib/string/String#toLowerCase local.tee $28 i32.const 14032 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5008,7 +4968,7 @@ call $~lib/string/String#toLowerCase local.tee $30 i32.const 14064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5024,7 +4984,7 @@ call $~lib/string/String#toLowerCase local.tee $32 i32.const 14320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5040,7 +5000,7 @@ call $~lib/string/String#toUpperCase local.tee $34 i32.const 14320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5054,7 +5014,7 @@ call $~lib/string/String#toLowerCase local.tee $35 i32.const 14384 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5068,7 +5028,7 @@ call $~lib/string/String#toLowerCase local.tee $36 i32.const 14448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5082,7 +5042,7 @@ call $~lib/string/String#toLowerCase local.tee $37 i32.const 14512 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5096,7 +5056,7 @@ call $~lib/string/String#toLowerCase local.tee $38 i32.const 14576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5110,7 +5070,7 @@ call $~lib/string/String#toLowerCase local.tee $39 i32.const 14640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5124,7 +5084,7 @@ call $~lib/string/String#toLowerCase local.tee $40 i32.const 14704 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5138,7 +5098,7 @@ call $~lib/string/String#toLowerCase local.tee $41 i32.const 14768 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5152,7 +5112,7 @@ call $~lib/string/String#toLowerCase local.tee $42 i32.const 14832 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5166,7 +5126,7 @@ call $~lib/string/String#toLowerCase local.tee $43 i32.const 14896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5180,7 +5140,7 @@ call $~lib/string/String#toLowerCase local.tee $44 i32.const 14960 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5194,7 +5154,7 @@ call $~lib/string/String#toLowerCase local.tee $45 i32.const 15024 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5208,7 +5168,7 @@ call $~lib/string/String#toLowerCase local.tee $46 i32.const 15088 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5222,7 +5182,7 @@ call $~lib/string/String#toLowerCase local.tee $47 i32.const 15152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5236,7 +5196,7 @@ call $~lib/string/String#toLowerCase local.tee $48 i32.const 15216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5250,7 +5210,7 @@ call $~lib/string/String#toLowerCase local.tee $49 i32.const 15280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5264,7 +5224,7 @@ call $~lib/string/String#toLowerCase local.tee $50 i32.const 15344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5278,7 +5238,7 @@ call $~lib/string/String#toLowerCase local.tee $51 i32.const 15408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5292,7 +5252,7 @@ call $~lib/string/String#toLowerCase local.tee $52 i32.const 15472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5306,7 +5266,7 @@ call $~lib/string/String#toLowerCase local.tee $53 i32.const 15536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5320,7 +5280,7 @@ call $~lib/string/String#toLowerCase local.tee $54 i32.const 15600 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5334,7 +5294,7 @@ call $~lib/string/String#toLowerCase local.tee $55 i32.const 15664 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5348,7 +5308,7 @@ call $~lib/string/String#toLowerCase local.tee $56 i32.const 15728 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5362,7 +5322,7 @@ call $~lib/string/String#toLowerCase local.tee $57 i32.const 15792 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5376,7 +5336,7 @@ call $~lib/string/String#toLowerCase local.tee $58 i32.const 15856 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5390,7 +5350,7 @@ call $~lib/string/String#toLowerCase local.tee $59 i32.const 15920 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5404,7 +5364,7 @@ call $~lib/string/String#toLowerCase local.tee $60 i32.const 15024 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5418,7 +5378,7 @@ call $~lib/string/String#toLowerCase local.tee $61 i32.const 16016 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5432,7 +5392,7 @@ call $~lib/string/String#toLowerCase local.tee $62 i32.const 16080 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5446,7 +5406,7 @@ call $~lib/string/String#toLowerCase local.tee $63 i32.const 16144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5460,7 +5420,7 @@ call $~lib/string/String#toLowerCase local.tee $64 i32.const 16208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5474,7 +5434,7 @@ call $~lib/string/String#toLowerCase local.tee $65 i32.const 16272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5488,7 +5448,7 @@ call $~lib/string/String#toLowerCase local.tee $66 i32.const 16336 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5502,7 +5462,7 @@ call $~lib/string/String#toLowerCase local.tee $67 i32.const 16400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5516,7 +5476,7 @@ call $~lib/string/String#toLowerCase local.tee $68 i32.const 16464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5530,7 +5490,7 @@ call $~lib/string/String#toLowerCase local.tee $69 i32.const 16528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5544,7 +5504,7 @@ call $~lib/string/String#toLowerCase local.tee $70 i32.const 16592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5558,7 +5518,7 @@ call $~lib/string/String#toLowerCase local.tee $71 i32.const 16656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5572,7 +5532,7 @@ call $~lib/string/String#toLowerCase local.tee $72 i32.const 16720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5586,7 +5546,7 @@ call $~lib/string/String#toUpperCase local.tee $73 i32.const 16784 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5600,7 +5560,7 @@ call $~lib/string/String#toUpperCase local.tee $74 i32.const 16816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5614,7 +5574,7 @@ call $~lib/string/String#toUpperCase local.tee $75 i32.const 16880 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5628,7 +5588,7 @@ call $~lib/string/String#toUpperCase local.tee $76 i32.const 16944 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5642,7 +5602,7 @@ call $~lib/string/String#toUpperCase local.tee $77 i32.const 17008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5656,7 +5616,7 @@ call $~lib/string/String#toUpperCase local.tee $78 i32.const 17072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5670,7 +5630,7 @@ call $~lib/string/String#toUpperCase local.tee $79 i32.const 17072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5684,7 +5644,7 @@ call $~lib/string/String#toUpperCase local.tee $80 i32.const 17168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5698,7 +5658,7 @@ call $~lib/string/String#toUpperCase local.tee $81 i32.const 17232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5712,7 +5672,7 @@ call $~lib/string/String#toUpperCase local.tee $82 i32.const 17296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5726,7 +5686,7 @@ call $~lib/string/String#toUpperCase local.tee $83 i32.const 17360 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5740,7 +5700,7 @@ call $~lib/string/String#toUpperCase local.tee $84 i32.const 17424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -5754,7 +5714,7 @@ call $~lib/string/String#toUpperCase local.tee $85 i32.const 17488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index f250402602..9dfed1a930 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1576,25 +1576,9 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 24 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 24 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -1630,7 +1614,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $2 i32.const 1296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1645,7 +1629,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $3 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1660,7 +1644,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $4 i32.const 1312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1677,7 +1661,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $5 i32.const 1344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1694,7 +1678,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $6 i32.const 1376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1711,7 +1695,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $7 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1728,7 +1712,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $1 i32.const 1296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2466,7 +2450,7 @@ if i32.const 0 i32.const 1440 - i32.const 738 + i32.const 749 i32.const 7 call $~lib/builtins/abort unreachable @@ -2708,7 +2692,7 @@ call $~lib/string/String.UTF8.decode local.tee $2 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2766,7 +2750,7 @@ call $~lib/string/String.UTF8.decode local.tee $3 i32.const 1520 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2784,7 +2768,7 @@ call $~lib/string/String.UTF8.decode local.tee $5 i32.const 1520 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2833,7 +2817,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $8 i32.const 1296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2849,7 +2833,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2865,7 +2849,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 i32.const 1312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2883,7 +2867,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $5 i32.const 1376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2901,7 +2885,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $4 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2919,7 +2903,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $3 i32.const 1296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2937,7 +2921,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $2 i32.const 1552 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2955,7 +2939,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $9 i32.const 1408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -2973,7 +2957,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $1 i32.const 1296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3017,7 +3001,7 @@ call $~lib/string/String.UTF8.decode local.tee $2 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3033,7 +3017,7 @@ call $~lib/string/String.UTF16.decode local.tee $4 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3074,7 +3058,7 @@ call $~lib/string/String.UTF16.decode local.tee $1 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3125,7 +3109,7 @@ call $~lib/string/String.UTF8.decode local.tee $1 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 3cd01e5bf3..0b0f08545e 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -3140,78 +3140,38 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 31 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $std/string-encoding/testUTF16Decode (; 32 ;) (local $0 i32) @@ -3223,7 +3183,7 @@ call $~lib/string/String.UTF16.decode local.tee $1 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3262,7 +3222,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $3 i32.const 288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3277,7 +3237,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $4 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3292,7 +3252,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $5 i32.const 304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3309,7 +3269,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $6 i32.const 336 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3326,7 +3286,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $7 i32.const 368 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3343,7 +3303,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $8 i32.const 400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3360,7 +3320,7 @@ call $~lib/string/String.UTF16.decodeUnsafe local.tee $9 i32.const 288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4307,7 +4267,7 @@ if i32.const 0 i32.const 432 - i32.const 738 + i32.const 749 i32.const 7 call $~lib/builtins/abort unreachable @@ -4526,7 +4486,7 @@ call $~lib/string/String.UTF8.decode local.tee $1 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4559,7 +4519,7 @@ call $~lib/string/String.UTF8.decode local.tee $1 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4623,7 +4583,7 @@ call $~lib/string/String.UTF8.decode local.tee $5 local.get $4 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4642,7 +4602,7 @@ call $~lib/string/String.UTF8.decode local.tee $7 local.get $4 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4698,7 +4658,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $3 i32.const 288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4714,7 +4674,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $4 global.get $std/string-encoding/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4730,7 +4690,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $5 i32.const 304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4748,7 +4708,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $6 i32.const 368 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4766,7 +4726,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 i32.const 400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4784,7 +4744,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $8 i32.const 288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4802,7 +4762,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $9 i32.const 544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4820,7 +4780,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $10 i32.const 400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4838,7 +4798,7 @@ call $~lib/string/String.UTF8.decodeUnsafe local.tee $11 i32.const 288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4886,7 +4846,7 @@ call $~lib/string/String.UTF8.decode local.tee $2 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -4903,7 +4863,7 @@ call $~lib/string/String.UTF16.decode local.tee $4 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 16a3dbd0a9..2cd49c3e31 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -40,24 +40,24 @@ (data (i32.const 1520) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") (data (i32.const 1568) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") (data (i32.const 1600) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 1632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1664) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 1696) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 1728) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 ") - (data (i32.const 1760) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 1792) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1824) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 1856) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1888) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 1920) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data (i32.const 1952) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 1984) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 2016) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 2080) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x") - (data (i32.const 2112) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 2144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g") - (data (i32.const 2176) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i") + (data (i32.const 1632) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 1664) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") + (data (i32.const 1696) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 ") + (data (i32.const 1728) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") + (data (i32.const 1760) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1792) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") + (data (i32.const 1824) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1856) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") + (data (i32.const 1888) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") + (data (i32.const 1920) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") + (data (i32.const 1952) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") + (data (i32.const 1984) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") + (data (i32.const 2016) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 2048) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x") + (data (i32.const 2080) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") + (data (i32.const 2112) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g") + (data (i32.const 2144) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i") + (data (i32.const 2176) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") (data (i32.const 2208) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d") (data (i32.const 2240) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d") (data (i32.const 2272) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c") @@ -437,7 +437,15 @@ end local.get $0 ) - (func $~lib/rt/pure/__release (; 7 ;) (param $0 i32) + (func $~lib/string/String#get:length (; 7 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/pure/__release (; 8 ;) (param $0 i32) local.get $0 i32.const 18008 i32.gt_u @@ -448,14 +456,6 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/string/String#get:length (; 8 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) (func $~lib/util/string/compareImpl (; 9 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $0 @@ -536,25 +536,9 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -571,17 +555,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/string/String.__not (; 11 ;) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - call $~lib/string/String#get:length - i32.eqz - else - i32.const 1 - end - ) - (func $~lib/rt/tlsf/removeBlock (; 12 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 11 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -743,7 +717,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 13 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 12 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1022,7 +996,7 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (; 13 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -1136,7 +1110,7 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/maybeInitialize (; 15 ;) (result i32) + (func $~lib/rt/tlsf/maybeInitialize (; 14 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1223,7 +1197,7 @@ end local.get $0 ) - (func $~lib/rt/tlsf/prepareSize (; 16 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 15 ;) (param $0 i32) (result i32) local.get $0 i32.const 1073741808 i32.ge_u @@ -1247,7 +1221,7 @@ i32.gt_u select ) - (func $~lib/rt/tlsf/searchBlock (; 17 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 16 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 256 @@ -1376,7 +1350,7 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/prepareBlock (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -1451,7 +1425,7 @@ i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1591,7 +1565,7 @@ call $~lib/rt/rtrace/onalloc local.get $3 ) - (func $~lib/rt/tlsf/__alloc (; 20 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__alloc (; 19 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 local.get $1 @@ -1599,7 +1573,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String.fromCharCode (; 21 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 2 @@ -1622,7 +1596,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 22 ;) (param $0 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 21 ;) (param $0 i32) (result i32) (local $1 i32) block $1of1 block $0of1 @@ -1641,11 +1615,11 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~setArgumentsLength (; 23 ;) (param $0 i32) + (func $~setArgumentsLength (; 22 ;) (param $0 i32) local.get $0 global.set $~argumentsLength ) - (func $~lib/string/String.fromCodePoint (; 24 ;) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 23 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1696,7 +1670,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#indexOf (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -1756,7 +1730,7 @@ end i32.const -1 ) - (func $~lib/memory/memory.copy (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1929,7 +1903,7 @@ end end ) - (func $~lib/memory/memory.repeat (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) local.get $2 local.get $3 @@ -1954,7 +1928,7 @@ end end ) - (func $~lib/string/String#padStart (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padStart (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2033,7 +2007,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#padEnd (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padEnd (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2113,7 +2087,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#lastIndexOf (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#lastIndexOf (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -2173,7 +2147,7 @@ end i32.const -1 ) - (func $~lib/string/String#localeCompare (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#localeCompare (; 30 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2211,7 +2185,7 @@ local.get $2 call $~lib/util/string/compareImpl ) - (func $~lib/util/string/isSpace (; 32 ;) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 31 ;) (param $0 i32) (result i32) local.get $0 i32.const 5760 i32.lt_u @@ -2275,7 +2249,7 @@ end i32.const 0 ) - (func $~lib/string/String#trimStart (; 33 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimStart (; 32 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2333,7 +2307,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trimEnd (; 34 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trimEnd (; 33 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2387,7 +2361,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#trim (; 35 ;) (param $0 i32) (result i32) + (func $~lib/string/String#trim (; 34 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2474,7 +2448,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/strtol (; 36 ;) (param $0 i32) (result f64) + (func $~lib/util/string/strtol (; 35 ;) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 f64) @@ -2689,7 +2663,7 @@ local.get $3 f64.mul ) - (func $~lib/util/string/strtol (; 37 ;) (result i32) + (func $~lib/util/string/strtol (; 36 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2905,7 +2879,7 @@ local.get $4 i32.mul ) - (func $~lib/util/string/strtol (; 38 ;) (result i64) + (func $~lib/util/string/strtol (; 37 ;) (result i64) (local $0 i32) (local $1 i32) (local $2 i64) @@ -3123,7 +3097,7 @@ local.get $4 i64.mul ) - (func $~lib/math/ipow32 (; 39 ;) (param $0 i32) (result i32) + (func $~lib/math/ipow32 (; 38 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 5 @@ -3157,7 +3131,7 @@ end local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 40 ;) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 39 ;) (param $0 f64) (param $1 i32) (result f64) local.get $1 i32.const 1023 i32.gt_s @@ -3234,7 +3208,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/util/string/strtod (; 41 ;) (param $0 i32) (result f64) + (func $~lib/util/string/strtod (; 40 ;) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3979,70 +3953,51 @@ end f64.const nan:0x8000000000000 ) - (func $~lib/string/String.__concat (; 42 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 41 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - block $__inlined_func$~lib/string/String#concat (result i32) + block $__inlined_func$~lib/string/String#concat local.get $0 - i32.const 1648 + i32.const 2192 local.get $0 select - local.set $2 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - local.get $0 - i32.const 1648 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 1648 - local.set $0 - end - local.get $2 + local.tee $3 call $~lib/string/String#get:length i32.const 1 i32.shl - local.tee $3 - local.get $0 + local.tee $2 + local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl local.tee $4 i32.add - local.tee $1 + local.tee $0 i32.eqz if - local.get $0 - call $~lib/rt/pure/__release i32.const 1280 + local.set $0 br $__inlined_func$~lib/string/String#concat end - local.get $1 + local.get $0 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $1 - local.get $2 + local.tee $0 local.get $3 + local.get $2 call $~lib/memory/memory.copy - local.get $1 - local.get $3 - i32.add local.get $0 + local.get $2 + i32.add + local.get $1 local.get $4 call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__release - local.get $1 end + local.get $0 ) - (func $~lib/string/String.__gt (; 43 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._gt (; 42 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -4089,7 +4044,7 @@ i32.const 0 i32.gt_s ) - (func $~lib/string/String.__lt (; 44 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 43 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -4136,7 +4091,7 @@ i32.const 0 i32.lt_s ) - (func $~lib/string/String#repeat (; 45 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 44 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -4156,7 +4111,7 @@ if i32.const 11904 i32.const 1536 - i32.const 322 + i32.const 268 i32.const 7 call $~lib/builtins/abort unreachable @@ -4195,7 +4150,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#replace (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replace (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4220,7 +4175,7 @@ local.get $0 local.get $1 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end @@ -4292,7 +4247,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/rt/tlsf/checkUsedBlock (; 47 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 46 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -4334,7 +4289,7 @@ end local.get $1 ) - (func $~lib/rt/tlsf/freeBlock (; 48 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 47 ;) (param $0 i32) (param $1 i32) local.get $1 local.get $1 i32.load @@ -4347,7 +4302,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4450,7 +4405,7 @@ end local.get $3 ) - (func $~lib/rt/tlsf/__realloc (; 50 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 49 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock @@ -4459,7 +4414,7 @@ i32.const 16 i32.add ) - (func $~lib/string/String#replaceAll (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#replaceAll (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4490,7 +4445,7 @@ local.get $0 local.get $4 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end @@ -4750,7 +4705,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#slice (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/string/String#get:length @@ -4824,7 +4779,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substr (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.const 0 @@ -4881,7 +4836,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substring (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -4960,7 +4915,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/rt/__allocArray (; 55 ;) (param $0 i32) (result i32) + (func $~lib/rt/__allocArray (; 54 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4988,7 +4943,7 @@ i32.store offset=12 local.get $1 ) - (func $~lib/memory/memory.fill (; 56 ;) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 55 ;) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -5146,7 +5101,7 @@ end end ) - (func $~lib/array/Array<~lib/string/String>#push (; 57 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#push (; 56 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5222,7 +5177,7 @@ local.get $3 i32.store offset=12 ) - (func $~lib/string/String#split (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5432,7 +5387,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 59 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 58 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -5440,7 +5395,7 @@ if i32.const 13216 i32.const 13168 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5460,14 +5415,14 @@ call $~lib/rt/pure/__release i32.const 13280 i32.const 13168 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable end local.get $0 ) - (func $~lib/util/number/decimalCount32 (; 60 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 59 ;) (param $0 i32) (result i32) local.get $0 i32.const 10 i32.ge_u @@ -5509,7 +5464,7 @@ i32.lt_u select ) - (func $~lib/util/number/utoa_simple (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -5536,7 +5491,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa32 (; 62 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 61 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5578,7 +5533,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 63 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 62 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5601,7 +5556,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64High (; 64 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64High (; 63 ;) (param $0 i64) (result i32) local.get $0 i64.const 100000000000 i64.ge_u @@ -5647,7 +5602,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 65 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 64 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -5677,7 +5632,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/utoa64 (; 66 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 65 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5720,7 +5675,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 67 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 66 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5785,7 +5740,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/genDigits (; 68 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 67 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -6176,7 +6131,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -6421,7 +6376,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 70 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 69 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) (local $4 i32) @@ -6713,7 +6668,7 @@ local.get $7 i32.add ) - (func $~lib/util/number/dtoa (; 71 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 70 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6768,7 +6723,7 @@ call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $start:std/string (; 72 ;) + (func $start:std/string (; 71 ;) (local $0 i32) (local $1 i32) (local $2 f64) @@ -6994,7 +6949,7 @@ end i32.const 1136 i32.const 1136 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7006,7 +6961,7 @@ end i32.const 1216 i32.const 1216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7018,7 +6973,7 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7063,8 +7018,7 @@ unreachable end i32.const 1280 - call $~lib/string/String.__not - i32.eqz + call $~lib/string/String#get:length if i32.const 0 i32.const 1088 @@ -7074,7 +7028,8 @@ unreachable end i32.const 1296 - call $~lib/string/String.__not + call $~lib/string/String#get:length + i32.eqz i32.eqz i32.const 1 i32.ne @@ -7087,7 +7042,8 @@ unreachable end i32.const 1328 - call $~lib/string/String.__not + call $~lib/string/String#get:length + i32.eqz i32.eqz i32.const 1 i32.ne @@ -7105,7 +7061,7 @@ call $~lib/string/String.fromCharCode|trampoline local.tee $41 i32.const 1296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7121,7 +7077,7 @@ call $~lib/string/String.fromCharCode|trampoline local.tee $42 i32.const 1472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7137,7 +7093,7 @@ call $~lib/string/String.fromCharCode|trampoline local.tee $43 i32.const 1472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7152,7 +7108,7 @@ call $~lib/string/String.fromCharCode local.tee $44 i32.const 1504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7166,7 +7122,7 @@ call $~lib/string/String.fromCodePoint local.tee $45 i32.const 1296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7180,7 +7136,7 @@ call $~lib/string/String.fromCodePoint local.tee $46 i32.const 1472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7194,7 +7150,7 @@ call $~lib/string/String.fromCodePoint local.tee $47 i32.const 1584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7204,51 +7160,33 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - local.set $12 - i32.const 1616 - local.tee $1 - i32.eqz - if - i32.const 1616 - call $~lib/rt/pure/__release - i32.const 1648 - local.set $1 - end - block $__inlined_func$~lib/string/String#startsWith + block $__inlined_func$~lib/string/String#startsWith (result i32) i32.const 0 - local.get $12 + i32.const 0 + global.get $std/string/str + local.tee $1 call $~lib/string/String#get:length - local.tee $11 + local.tee $0 i32.const 0 - local.get $11 + local.get $0 i32.lt_s select - local.tee $8 - local.get $1 + local.tee $3 + i32.const 1616 call $~lib/string/String#get:length - local.tee $0 + local.tee $4 i32.add - local.get $11 + local.get $0 i32.gt_s - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - br $__inlined_func$~lib/string/String#startsWith - end - local.get $12 - local.get $8 + br_if $__inlined_func$~lib/string/String#startsWith + drop local.get $1 - local.get $0 + local.get $3 + i32.const 1616 + local.get $4 call $~lib/util/string/compareImpl i32.eqz - local.set $0 - local.get $1 - call $~lib/rt/pure/__release end - local.get $0 i32.eqz if i32.const 0 @@ -7262,25 +7200,25 @@ i32.const 0 i32.const 536870904 global.get $std/string/str - local.tee $8 - call $~lib/string/String#get:length local.tee $0 + call $~lib/string/String#get:length + local.tee $1 i32.const 536870904 - local.get $0 + local.get $1 i32.lt_s select - i32.const 1680 + i32.const 1648 call $~lib/string/String#get:length local.tee $1 i32.sub - local.tee $0 + local.tee $3 i32.const 0 i32.lt_s br_if $__inlined_func$~lib/string/String#endsWith drop - local.get $8 local.get $0 - i32.const 1680 + local.get $3 + i32.const 1648 local.get $1 call $~lib/util/string/compareImpl i32.eqz @@ -7295,7 +7233,7 @@ unreachable end global.get $std/string/str - i32.const 1712 + i32.const 1680 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -7310,11 +7248,11 @@ end global.get $std/string/str i32.const 0 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padStart - local.tee $48 + local.tee $4 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7326,11 +7264,11 @@ end global.get $std/string/str i32.const 15 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padStart - local.tee $49 + local.tee $48 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7342,11 +7280,11 @@ end i32.const 1280 i32.const 3 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padStart - local.tee $50 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $49 + i32.const 1744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7360,9 +7298,9 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padStart - local.tee $51 + local.tee $50 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7376,9 +7314,9 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padStart - local.tee $52 + local.tee $51 i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7388,13 +7326,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 5 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padStart - local.tee $53 - i32.const 1840 - call $~lib/string/String.__eq + local.tee $52 + i32.const 1808 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7404,13 +7342,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 6 - i32.const 1872 + i32.const 1840 call $~lib/string/String#padStart - local.tee $54 - i32.const 1904 - call $~lib/string/String.__eq + local.tee $53 + i32.const 1872 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7420,13 +7358,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 8 - i32.const 1872 + i32.const 1840 call $~lib/string/String#padStart - local.tee $55 - i32.const 1936 - call $~lib/string/String.__eq + local.tee $54 + i32.const 1904 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7438,11 +7376,11 @@ end global.get $std/string/str i32.const 0 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padEnd - local.tee $56 + local.tee $55 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7454,11 +7392,11 @@ end global.get $std/string/str i32.const 15 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padEnd - local.tee $57 + local.tee $56 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7470,11 +7408,11 @@ end i32.const 1280 i32.const 3 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padEnd - local.tee $58 - i32.const 1776 - call $~lib/string/String.__eq + local.tee $57 + i32.const 1744 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7488,9 +7426,9 @@ i32.const 10 i32.const 1280 call $~lib/string/String#padEnd - local.tee $59 + local.tee $58 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7504,9 +7442,9 @@ i32.const 100 i32.const 1280 call $~lib/string/String#padEnd - local.tee $60 + local.tee $59 i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7516,13 +7454,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 5 - i32.const 1744 + i32.const 1712 call $~lib/string/String#padEnd - local.tee $61 - i32.const 1968 - call $~lib/string/String.__eq + local.tee $60 + i32.const 1936 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7532,13 +7470,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 6 - i32.const 1808 + i32.const 1776 call $~lib/string/String#padEnd - local.tee $62 - i32.const 2000 - call $~lib/string/String.__eq + local.tee $61 + i32.const 1968 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7548,13 +7486,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 8 - i32.const 1808 + i32.const 1776 call $~lib/string/String#padEnd - local.tee $63 - i32.const 2032 - call $~lib/string/String.__eq + local.tee $62 + i32.const 2000 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7627,7 +7565,7 @@ unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2032 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -7641,7 +7579,7 @@ unreachable end global.get $std/string/str - i32.const 2096 + i32.const 2064 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -7655,7 +7593,7 @@ unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2032 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -7669,7 +7607,7 @@ unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2032 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -7683,7 +7621,7 @@ unreachable end global.get $std/string/str - i32.const 2128 + i32.const 2096 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -7738,7 +7676,7 @@ unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2032 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 @@ -7752,7 +7690,7 @@ unreachable end global.get $std/string/str - i32.const 2096 + i32.const 2064 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -7766,7 +7704,7 @@ unreachable end global.get $std/string/str - i32.const 2160 + i32.const 2128 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 @@ -7780,7 +7718,7 @@ unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2032 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -7794,7 +7732,7 @@ unreachable end global.get $std/string/str - i32.const 2064 + i32.const 2032 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -7808,7 +7746,7 @@ unreachable end global.get $std/string/str - i32.const 2128 + i32.const 2096 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -7822,7 +7760,7 @@ unreachable end global.get $std/string/str - i32.const 2192 + i32.const 2160 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -7884,8 +7822,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1648 - i32.const 1648 + i32.const 2192 + i32.const 2192 call $~lib/string/String#localeCompare if i32.const 0 @@ -7895,7 +7833,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 2224 call $~lib/string/String#localeCompare i32.const -1 @@ -7909,7 +7847,7 @@ unreachable end i32.const 2224 - i32.const 1808 + i32.const 1776 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -7922,7 +7860,7 @@ unreachable end i32.const 2256 - i32.const 1808 + i32.const 1776 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -7934,7 +7872,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 2256 call $~lib/string/String#localeCompare i32.const -1 @@ -7948,7 +7886,7 @@ unreachable end i32.const 1280 - i32.const 1776 + i32.const 1744 call $~lib/string/String#localeCompare i32.const -1 i32.ne @@ -7975,9 +7913,9 @@ end i32.const 1280 call $~lib/string/String#trimStart - local.tee $64 + local.tee $63 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -7989,9 +7927,9 @@ end i32.const 2288 call $~lib/string/String#trimStart - local.tee $65 + local.tee $64 i32.const 2288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8003,9 +7941,9 @@ end i32.const 2320 call $~lib/string/String#trimStart - local.tee $66 + local.tee $65 i32.const 2368 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8017,9 +7955,9 @@ end i32.const 1280 call $~lib/string/String#trimEnd - local.tee $67 + local.tee $66 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8031,9 +7969,9 @@ end i32.const 2288 call $~lib/string/String#trimEnd - local.tee $68 + local.tee $67 i32.const 2288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8045,9 +7983,9 @@ end i32.const 2320 call $~lib/string/String#trimEnd - local.tee $69 + local.tee $68 i32.const 2400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8059,9 +7997,9 @@ end i32.const 1280 call $~lib/string/String#trim - local.tee $70 + local.tee $69 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8073,9 +8011,9 @@ end i32.const 2288 call $~lib/string/String#trim - local.tee $71 + local.tee $70 i32.const 2288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -8087,9 +8025,9 @@ end i32.const 2320 call $~lib/string/String#trim - local.tee $72 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $71 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -9763,17 +9701,17 @@ end i32.const 7872 i32.const 8032 - call $~lib/string/String.__concat - local.tee $73 + call $~lib/string/String._add + local.tee $72 i32.const 8192 - call $~lib/string/String.__concat - local.tee $74 + call $~lib/string/String._add + local.tee $73 i32.const 8352 - call $~lib/string/String.__concat - local.tee $75 + call $~lib/string/String._add + local.tee $74 i32.const 8512 - call $~lib/string/String.__concat - local.tee $76 + call $~lib/string/String._add + local.tee $75 call $~lib/util/string/strtod f64.const 1797693134862315708145274e284 f64.ne @@ -10100,11 +10038,11 @@ end i32.const 1328 i32.const 11424 - call $~lib/string/String.__concat - local.tee $1 - local.get $1 + call $~lib/string/String._add + local.tee $0 + local.get $0 i32.const 11456 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10115,7 +10053,7 @@ unreachable end i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10124,11 +10062,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10138,31 +10076,9 @@ call $~lib/builtins/abort unreachable end - i32.const 1280 - i32.const 0 - call $~lib/string/String.__eq - if - i32.const 0 - i32.const 1088 - i32.const 317 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1280 - call $~lib/string/String.__eq - if - i32.const 0 - i32.const 1088 - i32.const 318 - i32.const 1 - call $~lib/builtins/abort - unreachable - end i32.const 1328 i32.const 11424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10173,7 +10089,7 @@ end i32.const 1328 i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10185,7 +10101,7 @@ end i32.const 11488 i32.const 11520 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10196,7 +10112,7 @@ end i32.const 11488 i32.const 11488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10208,7 +10124,7 @@ end i32.const 11552 i32.const 11584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10219,7 +10135,7 @@ end i32.const 11616 i32.const 11648 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10230,7 +10146,7 @@ end i32.const 11680 i32.const 11680 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10242,7 +10158,7 @@ end i32.const 11680 i32.const 11712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10253,7 +10169,7 @@ end i32.const 11744 i32.const 11792 - call $~lib/string/String.__eq + call $~lib/string/String#_eq if i32.const 0 i32.const 1088 @@ -10264,7 +10180,7 @@ end i32.const 11424 i32.const 1328 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10276,7 +10192,7 @@ end i32.const 11840 i32.const 1328 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10299,7 +10215,7 @@ end i32.const 11840 i32.const 11456 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10342,9 +10258,9 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10355,7 +10271,7 @@ unreachable end i32.const 1280 - i32.const 1808 + i32.const 1776 call $~lib/string/String.__lt i32.eqz if @@ -10366,7 +10282,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 call $~lib/string/String.__lt if @@ -10378,8 +10294,8 @@ unreachable end i32.const 1280 - i32.const 1808 - call $~lib/string/String.__gt + i32.const 1776 + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10388,7 +10304,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 call $~lib/string/String.__lt if @@ -10400,8 +10316,8 @@ unreachable end i32.const 1280 - i32.const 1808 - call $~lib/string/String.__gt + i32.const 1776 + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10423,7 +10339,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__gt + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10445,7 +10361,7 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__gt + call $~lib/string/String._gt if i32.const 0 i32.const 1088 @@ -10456,16 +10372,16 @@ end i32.const 65377 call $~lib/string/String.fromCodePoint - local.tee $11 + local.tee $0 i32.const 55296 call $~lib/string/String.fromCodePoint - local.tee $8 + local.tee $1 i32.const 56322 call $~lib/string/String.fromCodePoint - local.tee $1 - call $~lib/string/String.__concat - local.tee $0 - call $~lib/string/String.__gt + local.tee $3 + call $~lib/string/String._add + local.tee $5 + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -10475,15 +10391,15 @@ call $~lib/builtins/abort unreachable end - local.get $11 - call $~lib/rt/pure/__release - local.get $8 + local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - i32.const 1872 + local.get $5 + call $~lib/rt/pure/__release + i32.const 1840 call $~lib/string/String#get:length i32.const 3 i32.ne @@ -10498,9 +10414,9 @@ i32.const 1280 i32.const 100 call $~lib/string/String#repeat - local.tee $77 + local.tee $5 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10513,9 +10429,9 @@ i32.const 1328 i32.const 0 call $~lib/string/String#repeat - local.tee $78 + local.tee $76 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10528,9 +10444,9 @@ i32.const 1328 i32.const 1 call $~lib/string/String#repeat - local.tee $79 + local.tee $77 i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10543,9 +10459,9 @@ i32.const 1328 i32.const 2 call $~lib/string/String#repeat - local.tee $80 + local.tee $78 i32.const 11872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10558,9 +10474,9 @@ i32.const 1328 i32.const 3 call $~lib/string/String#repeat - local.tee $81 + local.tee $79 i32.const 11952 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10573,9 +10489,9 @@ i32.const 11456 i32.const 4 call $~lib/string/String#repeat - local.tee $82 + local.tee $80 i32.const 11984 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10588,9 +10504,9 @@ i32.const 1328 i32.const 5 call $~lib/string/String#repeat - local.tee $83 + local.tee $81 i32.const 12016 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10603,9 +10519,9 @@ i32.const 1328 i32.const 6 call $~lib/string/String#repeat - local.tee $84 + local.tee $82 i32.const 12048 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10618,9 +10534,9 @@ i32.const 1328 i32.const 7 call $~lib/string/String#repeat - local.tee $85 + local.tee $83 i32.const 12080 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10634,9 +10550,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $86 + local.tee $84 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10650,9 +10566,9 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replace - local.tee $87 + local.tee $85 i32.const 5584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10666,9 +10582,9 @@ i32.const 5584 i32.const 1280 call $~lib/string/String#replace - local.tee $88 + local.tee $86 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10682,9 +10598,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replace - local.tee $89 + local.tee $87 i32.const 5584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10694,13 +10610,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 5616 i32.const 5584 call $~lib/string/String#replace - local.tee $90 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $88 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10710,13 +10626,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 + i32.const 1776 + i32.const 1776 i32.const 5584 call $~lib/string/String#replace - local.tee $91 + local.tee $89 i32.const 5584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10726,13 +10642,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 2256 i32.const 5584 call $~lib/string/String#replace - local.tee $92 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $90 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10742,13 +10658,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 11456 i32.const 11456 call $~lib/string/String#replace - local.tee $93 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $91 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10762,9 +10678,9 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replace - local.tee $94 + local.tee $92 i32.const 12144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10774,13 +10690,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const 5584 call $~lib/string/String#replace - local.tee $95 + local.tee $93 i32.const 12176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10794,9 +10710,9 @@ i32.const 12240 i32.const 5584 call $~lib/string/String#replace - local.tee $96 + local.tee $94 i32.const 12176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10806,13 +10722,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 12272 i32.const 12304 call $~lib/string/String#replace - local.tee $97 + local.tee $95 i32.const 12336 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10822,13 +10738,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 12272 i32.const 1280 call $~lib/string/String#replace - local.tee $98 + local.tee $96 i32.const 11456 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10840,11 +10756,11 @@ end i32.const 1280 i32.const 1280 - i32.const 1808 + i32.const 1776 call $~lib/string/String#replaceAll - local.tee $99 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $97 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10854,13 +10770,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 5616 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $100 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $98 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10870,13 +10786,13 @@ call $~lib/builtins/abort unreachable end - i32.const 2000 - i32.const 1808 + i32.const 1968 + i32.const 1776 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $101 + local.tee $99 i32.const 12304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10887,12 +10803,12 @@ unreachable end i32.const 12368 - i32.const 1808 + i32.const 1776 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $102 + local.tee $100 i32.const 12416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10902,13 +10818,13 @@ call $~lib/builtins/abort unreachable end - i32.const 2000 + i32.const 1968 i32.const 11456 i32.const 11456 call $~lib/string/String#replaceAll - local.tee $103 - i32.const 2000 - call $~lib/string/String.__eq + local.tee $101 + i32.const 1968 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10922,9 +10838,9 @@ i32.const 1328 i32.const 12416 call $~lib/string/String#replaceAll - local.tee $104 + local.tee $102 i32.const 12480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10934,13 +10850,13 @@ call $~lib/builtins/abort unreachable end - i32.const 2000 + i32.const 1968 i32.const 11456 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $105 + local.tee $103 i32.const 12528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10954,9 +10870,9 @@ i32.const 12592 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $106 + local.tee $104 i32.const 12624 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10966,13 +10882,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 2256 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $107 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $105 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10986,9 +10902,9 @@ i32.const 12656 i32.const 12304 call $~lib/string/String#replaceAll - local.tee $108 + local.tee $106 i32.const 2256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10998,13 +10914,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 12688 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $109 + local.tee $107 i32.const 12720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11018,9 +10934,9 @@ i32.const 11456 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $110 + local.tee $108 i32.const 5584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11034,9 +10950,9 @@ i32.const 5616 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $111 + local.tee $109 i32.const 12752 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11050,9 +10966,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $112 + local.tee $110 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11066,9 +10982,9 @@ i32.const 1280 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $113 + local.tee $111 i32.const 5584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11082,9 +10998,9 @@ i32.const 5584 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $114 + local.tee $112 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11098,9 +11014,9 @@ i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $115 + local.tee $113 i32.const 5584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11110,13 +11026,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 - i32.const 1808 + i32.const 1776 + i32.const 1776 i32.const 5616 call $~lib/string/String#replaceAll - local.tee $116 + local.tee $114 i32.const 5616 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11126,13 +11042,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 2224 i32.const 5616 call $~lib/string/String#replaceAll - local.tee $117 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $115 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11142,13 +11058,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const 5584 call $~lib/string/String#replaceAll - local.tee $118 + local.tee $116 i32.const 12784 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11158,13 +11074,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const 1280 call $~lib/string/String#replaceAll - local.tee $119 - i32.const 1808 - call $~lib/string/String.__eq + local.tee $117 + i32.const 1776 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11182,9 +11098,9 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#slice - local.tee $120 + local.tee $118 i32.const 12816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11198,9 +11114,9 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#slice - local.tee $121 + local.tee $119 i32.const 12864 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11214,9 +11130,9 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#slice - local.tee $122 + local.tee $120 i32.const 12896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11230,9 +11146,9 @@ i32.const 2 i32.const 7 call $~lib/string/String#slice - local.tee $123 + local.tee $121 i32.const 12928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11246,9 +11162,9 @@ i32.const -11 i32.const -6 call $~lib/string/String#slice - local.tee $124 + local.tee $122 i32.const 12960 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11262,9 +11178,9 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - local.tee $125 + local.tee $123 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11278,9 +11194,9 @@ i32.const 0 i32.const -1 call $~lib/string/String#slice - local.tee $126 + local.tee $124 i32.const 12992 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11294,9 +11210,9 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substr - local.tee $127 + local.tee $125 i32.const 12816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11310,9 +11226,9 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substr - local.tee $128 + local.tee $126 i32.const 12864 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11326,9 +11242,9 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substr - local.tee $129 + local.tee $127 i32.const 12896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11342,9 +11258,9 @@ i32.const 2 i32.const 7 call $~lib/string/String#substr - local.tee $130 + local.tee $128 i32.const 13040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11358,9 +11274,9 @@ i32.const -11 i32.const -6 call $~lib/string/String#substr - local.tee $131 + local.tee $129 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11374,9 +11290,9 @@ i32.const 4 i32.const 3 call $~lib/string/String#substr - local.tee $132 + local.tee $130 i32.const 13072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11390,9 +11306,9 @@ i32.const 0 i32.const -1 call $~lib/string/String#substr - local.tee $133 + local.tee $131 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11406,9 +11322,9 @@ i32.const 0 i32.const 100 call $~lib/string/String#substr - local.tee $134 + local.tee $132 i32.const 12816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11422,9 +11338,9 @@ i32.const 4 i32.const 4 call $~lib/string/String#substr - local.tee $135 + local.tee $133 i32.const 13104 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11438,9 +11354,9 @@ i32.const 4 i32.const -3 call $~lib/string/String#substr - local.tee $136 + local.tee $134 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11454,9 +11370,9 @@ i32.const 0 i32.const 2147483647 call $~lib/string/String#substring - local.tee $137 + local.tee $135 i32.const 12816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11470,9 +11386,9 @@ i32.const -1 i32.const 2147483647 call $~lib/string/String#substring - local.tee $138 + local.tee $136 i32.const 12816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11486,9 +11402,9 @@ i32.const -5 i32.const 2147483647 call $~lib/string/String#substring - local.tee $139 + local.tee $137 i32.const 12816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11502,9 +11418,9 @@ i32.const 2 i32.const 7 call $~lib/string/String#substring - local.tee $140 + local.tee $138 i32.const 12928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11518,9 +11434,9 @@ i32.const -11 i32.const -6 call $~lib/string/String#substring - local.tee $141 + local.tee $139 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11534,9 +11450,9 @@ i32.const 4 i32.const 3 call $~lib/string/String#substring - local.tee $142 + local.tee $140 i32.const 13136 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11550,9 +11466,9 @@ i32.const 0 i32.const -1 call $~lib/string/String#substring - local.tee $143 + local.tee $141 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11566,9 +11482,9 @@ i32.const 0 i32.const 100 call $~lib/string/String#substring - local.tee $144 + local.tee $142 i32.const 12816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11582,9 +11498,9 @@ i32.const 4 i32.const 4 call $~lib/string/String#substring - local.tee $145 + local.tee $143 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11598,9 +11514,9 @@ i32.const 4 i32.const -3 call $~lib/string/String#substring - local.tee $146 + local.tee $144 i32.const 2256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11624,12 +11540,12 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1280 - call $~lib/string/String.__eq - local.set $9 + call $~lib/string/String#_eq + local.set $6 local.get $0 call $~lib/rt/pure/__release end - local.get $9 + local.get $6 i32.eqz if i32.const 0 @@ -11657,28 +11573,28 @@ unreachable end i32.const 1280 - i32.const 2064 + i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $9 + local.set $1 local.get $0 call $~lib/rt/pure/__release - local.get $9 + local.get $1 i32.load offset=12 i32.const 1 i32.eq if - local.get $9 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1280 - call $~lib/string/String.__eq - local.set $13 + call $~lib/string/String#_eq + local.set $7 local.get $0 call $~lib/rt/pure/__release end - local.get $13 + local.get $7 i32.eqz if i32.const 0 @@ -11692,25 +11608,25 @@ i32.const 5776 i32.const 2147483647 call $~lib/string/String#split - local.set $1 - local.get $9 - call $~lib/rt/pure/__release + local.set $3 local.get $1 + call $~lib/rt/pure/__release + local.get $3 i32.load offset=12 i32.const 1 i32.eq if - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 13392 - call $~lib/string/String.__eq - local.set $5 + call $~lib/string/String#_eq + local.set $8 local.get $0 call $~lib/rt/pure/__release end - local.get $5 + local.get $8 i32.eqz if i32.const 0 @@ -11721,52 +11637,52 @@ unreachable end i32.const 13392 - i32.const 2064 + i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $5 - local.get $1 + local.set $0 + local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $5 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1328 - call $~lib/string/String.__eq - local.set $14 - local.get $0 + call $~lib/string/String#_eq + local.set $9 + local.get $1 call $~lib/rt/pure/__release end - local.get $14 + local.get $9 if - local.get $5 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 11424 - call $~lib/string/String.__eq - local.set $15 - local.get $0 + call $~lib/string/String#_eq + local.set $10 + local.get $1 call $~lib/rt/pure/__release end - local.get $15 + local.get $10 if - local.get $5 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 12272 - call $~lib/string/String.__eq - local.set $16 - local.get $0 + call $~lib/string/String#_eq + local.set $11 + local.get $1 call $~lib/rt/pure/__release end - local.get $16 + local.get $11 i32.eqz if i32.const 0 @@ -11781,7 +11697,7 @@ i32.const 2147483647 call $~lib/string/String#split local.set $1 - local.get $5 + local.get $0 call $~lib/rt/pure/__release local.get $1 i32.load offset=12 @@ -11793,36 +11709,36 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 - call $~lib/string/String.__eq - local.set $17 + call $~lib/string/String#_eq + local.set $12 local.get $0 call $~lib/rt/pure/__release end - local.get $17 + local.get $12 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11424 - call $~lib/string/String.__eq - local.set $18 + call $~lib/string/String#_eq + local.set $13 local.get $0 call $~lib/rt/pure/__release end - local.get $18 + local.get $13 if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12272 - call $~lib/string/String.__eq - local.set $3 + call $~lib/string/String#_eq + local.set $14 local.get $0 call $~lib/rt/pure/__release end - local.get $3 + local.get $14 i32.eqz if i32.const 0 @@ -11833,64 +11749,64 @@ unreachable end i32.const 13488 - i32.const 2064 + i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $3 + local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $0 i32.load offset=12 i32.const 4 i32.eq if - local.get $3 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1328 - call $~lib/string/String.__eq - local.set $19 - local.get $0 + call $~lib/string/String#_eq + local.set $15 + local.get $1 call $~lib/rt/pure/__release end - local.get $19 + local.get $15 if - local.get $3 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 11424 - call $~lib/string/String.__eq - local.set $20 - local.get $0 + call $~lib/string/String#_eq + local.set $16 + local.get $1 call $~lib/rt/pure/__release end - local.get $20 + local.get $16 if - local.get $3 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1280 - call $~lib/string/String.__eq - local.set $21 - local.get $0 + call $~lib/string/String#_eq + local.set $17 + local.get $1 call $~lib/rt/pure/__release end - local.get $21 + local.get $17 if - local.get $3 + local.get $0 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 12272 - call $~lib/string/String.__eq - local.set $22 - local.get $0 + call $~lib/string/String#_eq + local.set $18 + local.get $1 call $~lib/rt/pure/__release end - local.get $22 + local.get $18 i32.eqz if i32.const 0 @@ -11901,11 +11817,11 @@ unreachable end i32.const 13520 - i32.const 2064 + i32.const 2032 i32.const 2147483647 call $~lib/string/String#split local.set $1 - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $1 i32.load offset=12 @@ -11917,48 +11833,48 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1280 - call $~lib/string/String.__eq - local.set $23 + call $~lib/string/String#_eq + local.set $19 local.get $0 call $~lib/rt/pure/__release end - local.get $23 + local.get $19 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 - call $~lib/string/String.__eq - local.set $24 + call $~lib/string/String#_eq + local.set $20 local.get $0 call $~lib/rt/pure/__release end - local.get $24 + local.get $20 if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11424 - call $~lib/string/String.__eq - local.set $25 + call $~lib/string/String#_eq + local.set $21 local.get $0 call $~lib/rt/pure/__release end - local.get $25 + local.get $21 if local.get $1 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12272 - call $~lib/string/String.__eq - local.set $4 + call $~lib/string/String#_eq + local.set $22 local.get $0 call $~lib/rt/pure/__release end - local.get $4 + local.get $22 i32.eqz if i32.const 0 @@ -11969,64 +11885,64 @@ unreachable end i32.const 13552 - i32.const 2064 + i32.const 2032 i32.const 2147483647 call $~lib/string/String#split - local.set $4 + local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $0 i32.load offset=12 i32.const 4 i32.eq if - local.get $4 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1328 - call $~lib/string/String.__eq - local.set $26 - local.get $0 + call $~lib/string/String#_eq + local.set $23 + local.get $1 call $~lib/rt/pure/__release end - local.get $26 + local.get $23 if - local.get $4 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 11424 - call $~lib/string/String.__eq - local.set $27 - local.get $0 + call $~lib/string/String#_eq + local.set $24 + local.get $1 call $~lib/rt/pure/__release end - local.get $27 + local.get $24 if - local.get $4 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 12272 - call $~lib/string/String.__eq - local.set $28 - local.get $0 + call $~lib/string/String#_eq + local.set $25 + local.get $1 call $~lib/rt/pure/__release end - local.get $28 + local.get $25 if - local.get $4 + local.get $0 i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1280 - call $~lib/string/String.__eq - local.set $29 - local.get $0 + call $~lib/string/String#_eq + local.set $26 + local.get $1 call $~lib/rt/pure/__release end - local.get $29 + local.get $26 i32.eqz if i32.const 0 @@ -12036,12 +11952,12 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const 2147483647 call $~lib/string/String#split local.set $1 - local.get $4 + local.get $0 call $~lib/rt/pure/__release local.get $1 i32.load offset=12 @@ -12053,36 +11969,36 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 - call $~lib/string/String.__eq - local.set $30 + call $~lib/string/String#_eq + local.set $27 local.get $0 call $~lib/rt/pure/__release end - local.get $30 + local.get $27 if local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11424 - call $~lib/string/String.__eq - local.set $31 + call $~lib/string/String#_eq + local.set $28 local.get $0 call $~lib/rt/pure/__release end - local.get $31 + local.get $28 if local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12272 - call $~lib/string/String.__eq - local.set $10 + call $~lib/string/String#_eq + local.set $29 local.get $0 call $~lib/rt/pure/__release end - local.get $10 + local.get $29 i32.eqz if i32.const 0 @@ -12092,7 +12008,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const 0 call $~lib/string/String#split @@ -12109,29 +12025,29 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const 1 call $~lib/string/String#split - local.set $10 + local.set $1 local.get $0 call $~lib/rt/pure/__release - local.get $10 + local.get $1 i32.load offset=12 i32.const 1 i32.eq if - local.get $10 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 - call $~lib/string/String.__eq - local.set $32 + call $~lib/string/String#_eq + local.set $30 local.get $0 call $~lib/rt/pure/__release end - local.get $32 + local.get $30 i32.eqz if i32.const 0 @@ -12142,28 +12058,28 @@ unreachable end i32.const 13392 - i32.const 2064 + i32.const 2032 i32.const 1 call $~lib/string/String#split - local.set $1 - local.get $10 - call $~lib/rt/pure/__release + local.set $3 local.get $1 + call $~lib/rt/pure/__release + local.get $3 i32.load offset=12 i32.const 1 i32.eq if - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 - call $~lib/string/String.__eq - local.set $6 + call $~lib/string/String#_eq + local.set $31 local.get $0 call $~lib/rt/pure/__release end - local.get $6 + local.get $31 i32.eqz if i32.const 0 @@ -12173,53 +12089,53 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const 4 call $~lib/string/String#split - local.set $6 - local.get $1 + local.set $0 + local.get $3 call $~lib/rt/pure/__release - local.get $6 + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $6 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1328 - call $~lib/string/String.__eq - local.set $33 - local.get $0 + call $~lib/string/String#_eq + local.set $32 + local.get $1 call $~lib/rt/pure/__release end - local.get $33 + local.get $32 if - local.get $6 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 11424 - call $~lib/string/String.__eq - local.set $34 - local.get $0 + call $~lib/string/String#_eq + local.set $33 + local.get $1 call $~lib/rt/pure/__release end - local.get $34 + local.get $33 if - local.get $6 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 12272 - call $~lib/string/String.__eq - local.set $7 - local.get $0 + call $~lib/string/String#_eq + local.set $34 + local.get $1 call $~lib/rt/pure/__release end - local.get $7 + local.get $34 i32.eqz if i32.const 0 @@ -12229,48 +12145,48 @@ call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 1776 i32.const 1280 i32.const -1 call $~lib/string/String#split - local.set $7 - local.get $6 + local.set $1 + local.get $0 call $~lib/rt/pure/__release - local.get $7 + local.get $1 i32.load offset=12 i32.const 3 i32.eq if - local.get $7 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $35 local.get $0 call $~lib/rt/pure/__release end local.get $35 if - local.get $7 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 11424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $36 local.get $0 call $~lib/rt/pure/__release end local.get $36 if - local.get $7 + local.get $1 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $0 i32.const 12272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $37 local.get $0 call $~lib/rt/pure/__release @@ -12286,49 +12202,49 @@ unreachable end i32.const 13392 - i32.const 2064 + i32.const 2032 i32.const -1 call $~lib/string/String#split - local.set $1 - local.get $7 - call $~lib/rt/pure/__release + local.set $0 local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.load offset=12 i32.const 3 i32.eq if - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 1328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $38 - local.get $0 + local.get $1 call $~lib/rt/pure/__release end local.get $38 if - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 11424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $39 - local.get $0 + local.get $1 call $~lib/rt/pure/__release end local.get $39 if - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $0 + local.tee $1 i32.const 12272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $40 - local.get $0 + local.get $1 call $~lib/rt/pure/__release end local.get $40 @@ -12341,13 +12257,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 call $~lib/rt/pure/__release i32.const 0 call $~lib/util/number/itoa32 - local.tee $147 + local.tee $0 i32.const 2432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12359,9 +12275,9 @@ end i32.const 1 call $~lib/util/number/itoa32 - local.tee $148 + local.tee $1 i32.const 2496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12373,9 +12289,9 @@ end i32.const 8 call $~lib/util/number/itoa32 - local.tee $149 + local.tee $3 i32.const 13584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12387,9 +12303,9 @@ end i32.const 12 call $~lib/util/number/itoa32 - local.tee $150 + local.tee $6 i32.const 13616 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12401,9 +12317,9 @@ end i32.const 123 call $~lib/util/number/itoa32 - local.tee $151 - i32.const 1872 - call $~lib/string/String.__eq + local.tee $7 + i32.const 1840 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12415,9 +12331,9 @@ end i32.const -1000 call $~lib/util/number/itoa32 - local.tee $152 + local.tee $8 i32.const 13648 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12429,9 +12345,9 @@ end i32.const 1234 call $~lib/util/number/itoa32 - local.tee $153 + local.tee $9 i32.const 13680 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12443,9 +12359,9 @@ end i32.const 12345 call $~lib/util/number/itoa32 - local.tee $154 + local.tee $10 i32.const 13712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12457,9 +12373,9 @@ end i32.const 123456 call $~lib/util/number/itoa32 - local.tee $155 + local.tee $11 i32.const 13744 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12471,9 +12387,9 @@ end i32.const 1111111 call $~lib/util/number/itoa32 - local.tee $156 + local.tee $12 i32.const 13776 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12485,9 +12401,9 @@ end i32.const 1234567 call $~lib/util/number/itoa32 - local.tee $157 + local.tee $13 i32.const 13808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12499,9 +12415,9 @@ end i32.const 12345678 call $~lib/util/number/itoa32 - local.tee $158 + local.tee $14 i32.const 13840 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12513,9 +12429,9 @@ end i32.const 123456789 call $~lib/util/number/itoa32 - local.tee $159 + local.tee $15 i32.const 13872 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12527,9 +12443,9 @@ end i32.const 2147483646 call $~lib/util/number/itoa32 - local.tee $160 + local.tee $16 i32.const 13920 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12541,9 +12457,9 @@ end i32.const 2147483647 call $~lib/util/number/itoa32 - local.tee $161 + local.tee $17 i32.const 13968 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12555,9 +12471,9 @@ end i32.const -2147483648 call $~lib/util/number/itoa32 - local.tee $162 + local.tee $18 i32.const 14016 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12569,9 +12485,9 @@ end i32.const -1 call $~lib/util/number/itoa32 - local.tee $163 + local.tee $19 i32.const 14064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12583,9 +12499,9 @@ end i32.const 0 call $~lib/util/number/utoa32 - local.tee $164 + local.tee $20 i32.const 2432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12597,9 +12513,9 @@ end i32.const 1000 call $~lib/util/number/utoa32 - local.tee $165 + local.tee $21 i32.const 14096 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12611,9 +12527,9 @@ end i32.const 2147483647 call $~lib/util/number/utoa32 - local.tee $166 + local.tee $22 i32.const 13968 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12625,9 +12541,9 @@ end i32.const -2147483648 call $~lib/util/number/utoa32 - local.tee $167 + local.tee $23 i32.const 14128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12639,9 +12555,9 @@ end i32.const -1 call $~lib/util/number/utoa32 - local.tee $168 + local.tee $24 i32.const 14176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12653,9 +12569,9 @@ end i64.const 0 call $~lib/util/number/utoa64 - local.tee $169 + local.tee $25 i32.const 2432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12667,9 +12583,9 @@ end i64.const 12 call $~lib/util/number/utoa64 - local.tee $170 + local.tee $26 i32.const 13616 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12681,9 +12597,9 @@ end i64.const 123 call $~lib/util/number/utoa64 - local.tee $171 - i32.const 1872 - call $~lib/string/String.__eq + local.tee $27 + i32.const 1840 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12695,9 +12611,9 @@ end i64.const 1234 call $~lib/util/number/utoa64 - local.tee $172 + local.tee $28 i32.const 13680 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12709,9 +12625,9 @@ end i64.const 12345 call $~lib/util/number/utoa64 - local.tee $173 + local.tee $29 i32.const 13712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12723,9 +12639,9 @@ end i64.const 123456 call $~lib/util/number/utoa64 - local.tee $174 + local.tee $30 i32.const 13744 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12737,9 +12653,9 @@ end i64.const 1234567 call $~lib/util/number/utoa64 - local.tee $175 + local.tee $31 i32.const 13808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12751,9 +12667,9 @@ end i64.const 99999999 call $~lib/util/number/utoa64 - local.tee $176 + local.tee $32 i32.const 14224 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12765,9 +12681,9 @@ end i64.const 100000000 call $~lib/util/number/utoa64 - local.tee $177 + local.tee $33 i32.const 14256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12779,9 +12695,9 @@ end i64.const 4294967295 call $~lib/util/number/utoa64 - local.tee $178 + local.tee $34 i32.const 14176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12793,9 +12709,9 @@ end i64.const 4294967297 call $~lib/util/number/utoa64 - local.tee $179 + local.tee $35 i32.const 14304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12807,9 +12723,9 @@ end i64.const 68719476735 call $~lib/util/number/utoa64 - local.tee $180 + local.tee $36 i32.const 14352 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12821,9 +12737,9 @@ end i64.const 868719476735 call $~lib/util/number/utoa64 - local.tee $181 + local.tee $37 i32.const 14400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12835,9 +12751,9 @@ end i64.const 8687194767350 call $~lib/util/number/utoa64 - local.tee $182 + local.tee $38 i32.const 14448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12849,9 +12765,9 @@ end i64.const 86871947673501 call $~lib/util/number/utoa64 - local.tee $183 + local.tee $39 i32.const 14496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12863,9 +12779,9 @@ end i64.const 999868719476735 call $~lib/util/number/utoa64 - local.tee $184 + local.tee $40 i32.const 14544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12877,9 +12793,9 @@ end i64.const 9999868719476735 call $~lib/util/number/utoa64 - local.tee $185 + local.tee $145 i32.const 14592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12891,9 +12807,9 @@ end i64.const 19999868719476735 call $~lib/util/number/utoa64 - local.tee $186 + local.tee $146 i32.const 14640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12905,9 +12821,9 @@ end i64.const 129999868719476735 call $~lib/util/number/utoa64 - local.tee $187 + local.tee $147 i32.const 14704 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12919,9 +12835,9 @@ end i64.const 1239999868719476735 call $~lib/util/number/utoa64 - local.tee $188 + local.tee $148 i32.const 14768 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12933,9 +12849,9 @@ end i64.const -1 call $~lib/util/number/utoa64 - local.tee $189 + local.tee $149 i32.const 14832 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12947,9 +12863,9 @@ end i64.const 0 call $~lib/util/number/itoa64 - local.tee $190 + local.tee $150 i32.const 2432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12961,9 +12877,9 @@ end i64.const -1234 call $~lib/util/number/itoa64 - local.tee $191 + local.tee $151 i32.const 14896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12975,9 +12891,9 @@ end i64.const 4294967295 call $~lib/util/number/itoa64 - local.tee $192 + local.tee $152 i32.const 14176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -12989,9 +12905,9 @@ end i64.const 4294967297 call $~lib/util/number/itoa64 - local.tee $193 + local.tee $153 i32.const 14304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13003,9 +12919,9 @@ end i64.const -4294967295 call $~lib/util/number/itoa64 - local.tee $194 + local.tee $154 i32.const 14928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13017,9 +12933,9 @@ end i64.const 68719476735 call $~lib/util/number/itoa64 - local.tee $195 + local.tee $155 i32.const 14352 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13031,9 +12947,9 @@ end i64.const -68719476735 call $~lib/util/number/itoa64 - local.tee $196 + local.tee $156 i32.const 14976 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13045,9 +12961,9 @@ end i64.const -868719476735 call $~lib/util/number/itoa64 - local.tee $197 + local.tee $157 i32.const 15024 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13059,9 +12975,9 @@ end i64.const -999868719476735 call $~lib/util/number/itoa64 - local.tee $198 + local.tee $158 i32.const 15072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13073,9 +12989,9 @@ end i64.const -19999868719476735 call $~lib/util/number/itoa64 - local.tee $199 + local.tee $159 i32.const 15120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13087,9 +13003,9 @@ end i64.const 9223372036854775807 call $~lib/util/number/itoa64 - local.tee $200 + local.tee $160 i32.const 15184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13101,9 +13017,9 @@ end i64.const -9223372036854775808 call $~lib/util/number/itoa64 - local.tee $201 + local.tee $161 i32.const 15248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13115,9 +13031,9 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $202 + local.tee $162 i32.const 15312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13129,9 +13045,9 @@ end f64.const -0 call $~lib/util/number/dtoa - local.tee $203 + local.tee $163 i32.const 15312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13143,9 +13059,9 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - local.tee $204 + local.tee $164 i32.const 5840 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13157,9 +13073,9 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $205 + local.tee $165 i32.const 15344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13171,9 +13087,9 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $206 + local.tee $166 i32.const 7056 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13185,9 +13101,9 @@ end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $207 + local.tee $167 i32.const 6352 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13199,9 +13115,9 @@ end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - local.tee $208 + local.tee $168 i32.const 16352 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13213,9 +13129,9 @@ end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $209 + local.tee $169 i32.const 6416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13227,9 +13143,9 @@ end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - local.tee $210 + local.tee $170 i32.const 16416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13241,9 +13157,9 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - local.tee $211 + local.tee $171 i32.const 16480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13255,9 +13171,9 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - local.tee $12 + local.tee $172 i32.const 16544 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13269,9 +13185,9 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - local.tee $11 + local.tee $173 i32.const 16608 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13283,9 +13199,9 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - local.tee $8 + local.tee $174 i32.const 16656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13297,9 +13213,9 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - local.tee $9 + local.tee $175 i32.const 16720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13311,9 +13227,9 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $13 + local.tee $176 i32.const 16784 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13325,9 +13241,9 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $5 + local.tee $177 i32.const 6480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13339,9 +13255,9 @@ end f64.const 1 call $~lib/util/number/dtoa - local.tee $14 + local.tee $178 i32.const 16848 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13353,9 +13269,9 @@ end f64.const 0.1 call $~lib/util/number/dtoa - local.tee $15 + local.tee $179 i32.const 3488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13367,9 +13283,9 @@ end f64.const -1 call $~lib/util/number/dtoa - local.tee $16 + local.tee $180 i32.const 16880 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13381,9 +13297,9 @@ end f64.const -0.1 call $~lib/util/number/dtoa - local.tee $17 + local.tee $181 i32.const 16912 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13395,9 +13311,9 @@ end f64.const 1e6 call $~lib/util/number/dtoa - local.tee $18 + local.tee $182 i32.const 16944 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13409,9 +13325,9 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - local.tee $3 + local.tee $183 i32.const 16992 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13423,9 +13339,9 @@ end f64.const -1e6 call $~lib/util/number/dtoa - local.tee $19 + local.tee $184 i32.const 17024 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13437,9 +13353,9 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - local.tee $20 + local.tee $185 i32.const 17072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13451,9 +13367,9 @@ end f64.const 1e7 call $~lib/util/number/dtoa - local.tee $21 + local.tee $186 i32.const 17120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13465,9 +13381,9 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - local.tee $22 + local.tee $187 i32.const 17168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13479,9 +13395,9 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - local.tee $23 + local.tee $188 i32.const 3712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13493,9 +13409,9 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - local.tee $24 + local.tee $189 i32.const 17200 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13507,9 +13423,9 @@ end f64.const inf call $~lib/util/number/dtoa - local.tee $25 + local.tee $190 i32.const 15344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13521,9 +13437,9 @@ end f64.const -inf call $~lib/util/number/dtoa - local.tee $4 + local.tee $191 i32.const 7056 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13535,9 +13451,9 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - local.tee $26 + local.tee $192 i32.const 17232 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13549,9 +13465,9 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - local.tee $27 + local.tee $193 i32.const 17264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13563,9 +13479,9 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - local.tee $28 + local.tee $194 i32.const 17296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13577,9 +13493,9 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - local.tee $29 + local.tee $195 i32.const 17328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13591,9 +13507,9 @@ end f64.const 0 call $~lib/util/number/dtoa - local.tee $30 + local.tee $196 i32.const 15312 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13605,9 +13521,9 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - local.tee $31 + local.tee $197 i32.const 17360 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13619,9 +13535,9 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - local.tee $10 + local.tee $198 i32.const 17408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13633,9 +13549,9 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - local.tee $32 + local.tee $199 i32.const 17472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13647,9 +13563,9 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - local.tee $6 + local.tee $200 i32.const 17536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13661,9 +13577,9 @@ end f64.const 1 call $~lib/util/number/dtoa - local.tee $33 + local.tee $201 i32.const 16848 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13675,9 +13591,9 @@ end f64.const 12.34 call $~lib/util/number/dtoa - local.tee $34 + local.tee $202 i32.const 17600 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13689,9 +13605,9 @@ end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - local.tee $7 + local.tee $203 i32.const 17632 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13703,9 +13619,9 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - local.tee $35 + local.tee $204 i32.const 17696 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13717,9 +13633,9 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - local.tee $36 + local.tee $205 i32.const 17760 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13731,9 +13647,9 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - local.tee $37 + local.tee $206 i32.const 17808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13745,9 +13661,9 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - local.tee $38 + local.tee $207 i32.const 17840 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13759,9 +13675,9 @@ end f64.const 271.828 call $~lib/util/number/dtoa - local.tee $39 + local.tee $208 i32.const 17888 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13773,9 +13689,9 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - local.tee $40 + local.tee $209 i32.const 17920 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13787,9 +13703,9 @@ end f64.const 1.1e-64 call $~lib/util/number/dtoa - local.tee $1 + local.tee $210 i32.const 17952 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13801,9 +13717,9 @@ end f64.const 0.000035689 call $~lib/util/number/dtoa - local.tee $0 + local.tee $211 i32.const 17984 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13829,6 +13745,8 @@ call $~lib/rt/pure/__release local.get $47 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release local.get $49 @@ -13885,18 +13803,20 @@ call $~lib/rt/pure/__release local.get $75 call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release local.get $79 call $~lib/rt/pure/__release local.get $78 call $~lib/rt/pure/__release local.get $77 call $~lib/rt/pure/__release + local.get $76 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $80 + call $~lib/rt/pure/__release + local.get $81 + call $~lib/rt/pure/__release local.get $82 call $~lib/rt/pure/__release local.get $83 @@ -14023,16 +13943,92 @@ call $~lib/rt/pure/__release local.get $144 call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $30 + call $~lib/rt/pure/__release + local.get $31 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release + local.get $33 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + local.get $35 + call $~lib/rt/pure/__release + local.get $36 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release local.get $145 call $~lib/rt/pure/__release local.get $146 call $~lib/rt/pure/__release local.get $147 call $~lib/rt/pure/__release - local.get $149 - call $~lib/rt/pure/__release local.get $148 call $~lib/rt/pure/__release + local.get $149 + call $~lib/rt/pure/__release local.get $150 call $~lib/rt/pure/__release local.get $151 @@ -14157,92 +14153,12 @@ call $~lib/rt/pure/__release local.get $211 call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release ) - (func $std/string/getString (; 73 ;) (result i32) + (func $std/string/getString (; 72 ;) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $~start (; 74 ;) + (func $~start (; 73 ;) global.get $~started if return @@ -14252,7 +14168,7 @@ end call $start:std/string ) - (func $~lib/rt/pure/decrement (; 75 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 74 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14382,7 +14298,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 76 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 75 ;) (param $0 i32) local.get $0 i32.const 18008 i32.lt_u diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 7cebf8518b..545ab55dbf 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -2,7 +2,7 @@ import { utoa32, itoa32, utoa64, itoa64, dtoa } from "util/number"; // preliminary var str: string = "hi, I'm a string"; -var nullStr: string; +var nullStr: string | null; // exactly once in static memory assert(changetype(str) == changetype("hi, I'm a string")); diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index ec92358ef2..dedea24211 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -42,24 +42,24 @@ (data (i32.const 512) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") (data (i32.const 560) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") (data (i32.const 592) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 624) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 656) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 688) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m\00") - (data (i32.const 720) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 \00") - (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 \00") - (data (i32.const 784) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 816) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") - (data (i32.const 848) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 880) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 912) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") - (data (i32.const 944) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") - (data (i32.const 976) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 1008) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") - (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 1072) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I\00") - (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g\00") - (data (i32.const 1168) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i\00") + (data (i32.const 624) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") + (data (i32.const 656) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m\00") + (data (i32.const 688) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00 \00") + (data (i32.const 720) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00 \00 \00 \00") + (data (i32.const 752) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 784) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") + (data (i32.const 816) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 848) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") + (data (i32.const 880) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") + (data (i32.const 912) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") + (data (i32.const 944) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") + (data (i32.const 976) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") + (data (i32.const 1008) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 1040) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00x\00") + (data (i32.const 1072) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00,\00 \00I\00") + (data (i32.const 1104) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00g\00") + (data (i32.const 1136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00i\00") + (data (i32.const 1168) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (data (i32.const 1200) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00d\00") (data (i32.const 1232) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d\00") (data (i32.const 1264) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c\00") @@ -464,7 +464,15 @@ end local.get $0 ) - (func $~lib/rt/pure/__release (; 8 ;) (param $0 i32) + (func $~lib/string/String#get:length (; 8 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/rt/pure/__release (; 9 ;) (param $0 i32) local.get $0 global.get $~lib/heap/__heap_base i32.gt_u @@ -475,14 +483,6 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/string/String#get:length (; 9 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) (func $~lib/util/string/compareImpl (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -605,78 +605,38 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 11 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/string/String#charCodeAt (; 12 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -694,25 +654,10 @@ i32.add i32.load16_u ) - (func $~lib/string/String.__not (; 13 ;) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - call $~lib/string/String#get:length - i32.eqz - end - local.set $1 + (func $~lib/string/String#_not (; 13 ;) (param $0 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 + call $~lib/string/String#get:length + i32.eqz ) (func $~lib/rt/tlsf/removeBlock (; 14 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -2203,41 +2148,22 @@ local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 640 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $3 - local.set $1 - end local.get $0 call $~lib/string/String#get:length - local.set $5 + local.set $3 local.get $2 - local.tee $3 - i32.const 0 local.tee $4 - local.get $3 + i32.const 0 + local.tee $5 local.get $4 + local.get $5 i32.gt_s select - local.tee $3 - local.get $5 local.tee $4 local.get $3 + local.tee $5 local.get $4 + local.get $5 i32.lt_s select local.set $6 @@ -2247,14 +2173,14 @@ local.get $7 local.get $6 i32.add - local.get $5 + local.get $3 i32.gt_s if i32.const 0 - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 return end local.get $0 @@ -2264,10 +2190,10 @@ local.get $7 call $~lib/util/string/compareImpl i32.eqz - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 ) (func $~lib/string/String#endsWith (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2277,17 +2203,6 @@ local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end local.get $2 local.tee $3 i32.const 0 @@ -6559,77 +6474,57 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 640 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 272 call $~lib/rt/pure/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 ) - (func $~lib/string/String.__concat (; 54 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 54 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6638,7 +6533,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - i32.const 640 + i32.const 1184 local.get $0 i32.const 0 i32.ne @@ -6652,26 +6547,21 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__ne (; 55 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_ne (; 55 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 local.get $1 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz local.set $2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gt (; 56 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._gt (; 56 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6689,15 +6579,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -6779,15 +6667,13 @@ i32.const 1 else local.get $0 - i32.const 0 - i32.eq + i32.eqz end if (result i32) i32.const 1 else local.get $1 - i32.const 0 - i32.eq + i32.eqz end if i32.const 0 @@ -6851,7 +6737,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gte (; 58 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._ge (; 58 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6870,7 +6756,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lte (; 59 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__le (; 59 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6880,7 +6766,7 @@ local.set $1 local.get $0 local.get $1 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz local.set $2 local.get $0 @@ -6912,7 +6798,7 @@ if i32.const 10896 i32.const 528 - i32.const 322 + i32.const 268 i32.const 7 call $~lib/builtins/abort unreachable @@ -6992,7 +6878,7 @@ local.get $0 local.get $1 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end @@ -7319,7 +7205,7 @@ local.get $0 local.get $1 local.get $0 - call $~lib/string/String.__eq + call $~lib/string/String#_eq select call $~lib/rt/pure/__retain end @@ -8302,8 +8188,7 @@ return end local.get $1 - i32.const 0 - i32.eq + i32.eqz if i32.const 1 i32.const 2 @@ -8599,7 +8484,7 @@ if i32.const 12208 i32.const 12160 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -8615,7 +8500,7 @@ call $~lib/rt/pure/__release i32.const 12272 i32.const 12160 - i32.const 108 + i32.const 111 i32.const 40 call $~lib/builtins/abort unreachable @@ -10782,7 +10667,7 @@ end i32.const 128 i32.const 128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10794,7 +10679,7 @@ end i32.const 208 i32.const 208 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10806,7 +10691,7 @@ end i32.const 240 i32.const 240 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10844,7 +10729,7 @@ unreachable end i32.const 272 - call $~lib/string/String.__not + call $~lib/string/String#_not i32.eqz i32.const 0 i32.eq @@ -10858,7 +10743,7 @@ unreachable end i32.const 288 - call $~lib/string/String.__not + call $~lib/string/String#_not i32.eqz i32.const 1 i32.eq @@ -10872,7 +10757,7 @@ unreachable end i32.const 320 - call $~lib/string/String.__not + call $~lib/string/String#_not i32.eqz i32.const 1 i32.eq @@ -10892,7 +10777,7 @@ call $~lib/string/String.fromCharCode|trampoline local.tee $0 i32.const 288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10909,7 +10794,7 @@ call $~lib/string/String.fromCharCode|trampoline local.tee $1 i32.const 464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10926,7 +10811,7 @@ call $~lib/string/String.fromCharCode|trampoline local.tee $2 i32.const 464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10941,7 +10826,7 @@ call $~lib/string/String.fromCharCode local.tee $3 i32.const 496 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10955,7 +10840,7 @@ call $~lib/string/String.fromCodePoint local.tee $4 i32.const 288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10969,7 +10854,7 @@ call $~lib/string/String.fromCodePoint local.tee $5 i32.const 464 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -10983,7 +10868,7 @@ call $~lib/string/String.fromCodePoint local.tee $6 i32.const 576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11007,7 +10892,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 640 i32.const 536870904 call $~lib/string/String#endsWith i32.eqz @@ -11020,7 +10905,7 @@ unreachable end global.get $std/string/str - i32.const 704 + i32.const 672 i32.const 0 call $~lib/string/String#includes i32.eqz @@ -11034,11 +10919,11 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $7 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11050,11 +10935,11 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $8 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11066,11 +10951,11 @@ end i32.const 272 i32.const 3 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $9 - i32.const 768 - call $~lib/string/String.__eq + i32.const 736 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11086,7 +10971,7 @@ call $~lib/string/String#padStart local.tee $10 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11102,7 +10987,7 @@ call $~lib/string/String#padStart local.tee $11 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11112,13 +10997,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 5 - i32.const 736 + i32.const 704 call $~lib/string/String#padStart local.tee $12 - i32.const 832 - call $~lib/string/String.__eq + i32.const 800 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11128,13 +11013,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 6 - i32.const 864 + i32.const 832 call $~lib/string/String#padStart local.tee $13 - i32.const 896 - call $~lib/string/String.__eq + i32.const 864 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11144,13 +11029,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 8 - i32.const 864 + i32.const 832 call $~lib/string/String#padStart local.tee $14 - i32.const 928 - call $~lib/string/String.__eq + i32.const 896 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11162,11 +11047,11 @@ end global.get $std/string/str i32.const 0 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $15 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11178,11 +11063,11 @@ end global.get $std/string/str i32.const 15 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $16 global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11194,11 +11079,11 @@ end i32.const 272 i32.const 3 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $17 - i32.const 768 - call $~lib/string/String.__eq + i32.const 736 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11214,7 +11099,7 @@ call $~lib/string/String#padEnd local.tee $18 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11230,7 +11115,7 @@ call $~lib/string/String#padEnd local.tee $19 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11240,13 +11125,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 5 - i32.const 736 + i32.const 704 call $~lib/string/String#padEnd local.tee $20 - i32.const 960 - call $~lib/string/String.__eq + i32.const 928 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11256,13 +11141,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 6 - i32.const 800 + i32.const 768 call $~lib/string/String#padEnd local.tee $21 - i32.const 992 - call $~lib/string/String.__eq + i32.const 960 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11272,13 +11157,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 8 - i32.const 800 + i32.const 768 call $~lib/string/String#padEnd local.tee $22 - i32.const 1024 - call $~lib/string/String.__eq + i32.const 992 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11364,7 +11249,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -11379,7 +11264,7 @@ unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1056 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -11394,7 +11279,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -11409,7 +11294,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -11424,7 +11309,7 @@ unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1088 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -11485,7 +11370,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 @@ -11500,7 +11385,7 @@ unreachable end global.get $std/string/str - i32.const 1088 + i32.const 1056 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -11515,7 +11400,7 @@ unreachable end global.get $std/string/str - i32.const 1152 + i32.const 1120 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 @@ -11530,7 +11415,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -11545,7 +11430,7 @@ unreachable end global.get $std/string/str - i32.const 1056 + i32.const 1024 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -11560,7 +11445,7 @@ unreachable end global.get $std/string/str - i32.const 1120 + i32.const 1088 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -11575,7 +11460,7 @@ unreachable end global.get $std/string/str - i32.const 1184 + i32.const 1152 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -11646,8 +11531,8 @@ call $~lib/builtins/abort unreachable end - i32.const 640 - i32.const 640 + i32.const 1184 + i32.const 1184 call $~lib/string/String#localeCompare i32.const 0 i32.eq @@ -11660,7 +11545,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1216 call $~lib/string/String#localeCompare i32.const -1 @@ -11675,7 +11560,7 @@ unreachable end i32.const 1216 - i32.const 800 + i32.const 768 call $~lib/string/String#localeCompare i32.const 1 i32.eq @@ -11689,7 +11574,7 @@ unreachable end i32.const 1248 - i32.const 800 + i32.const 768 call $~lib/string/String#localeCompare i32.const 1 i32.eq @@ -11702,7 +11587,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 call $~lib/string/String#localeCompare i32.const -1 @@ -11717,7 +11602,7 @@ unreachable end i32.const 272 - i32.const 768 + i32.const 736 call $~lib/string/String#localeCompare i32.const -1 i32.eq @@ -11748,7 +11633,7 @@ call $~lib/string/String#trimStart local.tee $23 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11762,7 +11647,7 @@ call $~lib/string/String#trimStart local.tee $24 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11776,7 +11661,7 @@ call $~lib/string/String#trimStart local.tee $25 i32.const 1360 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11790,7 +11675,7 @@ call $~lib/string/String#trimEnd local.tee $26 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11804,7 +11689,7 @@ call $~lib/string/String#trimEnd local.tee $27 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11818,7 +11703,7 @@ call $~lib/string/String#trimEnd local.tee $28 i32.const 1392 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11832,7 +11717,7 @@ call $~lib/string/String#trim local.tee $29 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11846,7 +11731,7 @@ call $~lib/string/String#trim local.tee $30 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -11859,8 +11744,8 @@ i32.const 1312 call $~lib/string/String#trim local.tee $31 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -13690,16 +13575,16 @@ end i32.const 6864 i32.const 7024 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $33 i32.const 7184 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $34 i32.const 7344 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $35 i32.const 7504 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $36 call $~lib/string/parseFloat f64.const 1797693134862315708145274e284 @@ -14054,13 +13939,13 @@ end i32.const 320 i32.const 10416 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $37 call $~lib/rt/pure/__retain local.set $38 local.get $38 i32.const 10448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14072,7 +13957,7 @@ end local.get $38 i32.const 320 - call $~lib/string/String.__ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14088,7 +13973,7 @@ call $~lib/rt/pure/__release i32.const 272 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14098,9 +13983,16 @@ call $~lib/builtins/abort unreachable end - i32.const 272 global.get $std/string/nullStr - call $~lib/string/String.__ne + local.tee $37 + i32.eqz + if (result i32) + i32.const 1 + else + i32.const 272 + local.get $37 + call $~lib/string/String#_ne + end i32.eqz if i32.const 0 @@ -14111,8 +14003,15 @@ unreachable end global.get $std/string/nullStr - i32.const 272 - call $~lib/string/String.__ne + local.tee $37 + i32.eqz + if (result i32) + i32.const 1 + else + local.get $37 + i32.const 272 + call $~lib/string/String#_ne + end i32.eqz if i32.const 0 @@ -14124,7 +14023,7 @@ end i32.const 320 i32.const 10416 - call $~lib/string/String.__ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14136,7 +14035,7 @@ end i32.const 320 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14148,7 +14047,7 @@ end i32.const 10480 i32.const 10512 - call $~lib/string/String.__ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14160,7 +14059,7 @@ end i32.const 10480 i32.const 10480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14172,7 +14071,7 @@ end i32.const 10544 i32.const 10576 - call $~lib/string/String.__ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14184,7 +14083,7 @@ end i32.const 10608 i32.const 10640 - call $~lib/string/String.__ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14196,7 +14095,7 @@ end i32.const 10672 i32.const 10672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14208,7 +14107,7 @@ end i32.const 10672 i32.const 10704 - call $~lib/string/String.__ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14220,7 +14119,7 @@ end i32.const 10736 i32.const 10784 - call $~lib/string/String.__ne + call $~lib/string/String#_ne i32.eqz if i32.const 0 @@ -14232,7 +14131,7 @@ end i32.const 10416 i32.const 320 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -14244,7 +14143,7 @@ end i32.const 10832 i32.const 320 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -14256,7 +14155,7 @@ end i32.const 10832 i32.const 10864 - call $~lib/string/String.__gte + call $~lib/string/String._ge i32.eqz if i32.const 0 @@ -14268,7 +14167,7 @@ end i32.const 10832 i32.const 10448 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -14317,9 +14216,9 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -14330,7 +14229,7 @@ unreachable end i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String.__lt i32.eqz if @@ -14341,9 +14240,9 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 - call $~lib/string/String.__gte + call $~lib/string/String._ge i32.eqz if i32.const 0 @@ -14354,8 +14253,8 @@ unreachable end i32.const 272 - i32.const 800 - call $~lib/string/String.__lte + i32.const 768 + call $~lib/string/String.__le i32.eqz if i32.const 0 @@ -14365,7 +14264,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 call $~lib/string/String.__lt i32.eqz @@ -14379,8 +14278,8 @@ unreachable end i32.const 272 - i32.const 800 - call $~lib/string/String.__gt + i32.const 768 + call $~lib/string/String._gt i32.eqz i32.eqz if @@ -14406,7 +14305,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz i32.eqz if @@ -14419,7 +14318,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__gte + call $~lib/string/String._ge i32.eqz if i32.const 0 @@ -14431,7 +14330,7 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__lte + call $~lib/string/String.__le i32.eqz if i32.const 0 @@ -14443,20 +14342,20 @@ end i32.const 65377 call $~lib/string/String.fromCodePoint - local.set $38 + local.set $37 i32.const 55296 call $~lib/string/String.fromCodePoint - local.tee $37 + local.tee $38 i32.const 56322 call $~lib/string/String.fromCodePoint local.tee $39 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $40 call $~lib/rt/pure/__retain local.set $41 - local.get $38 + local.get $37 local.get $41 - call $~lib/string/String.__gt + call $~lib/string/String._gt i32.eqz if i32.const 0 @@ -14466,17 +14365,17 @@ call $~lib/builtins/abort unreachable end - local.get $38 - call $~lib/rt/pure/__release local.get $37 call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release local.get $41 call $~lib/rt/pure/__release - i32.const 864 + i32.const 832 call $~lib/string/String#get:length i32.const 3 i32.eq @@ -14494,7 +14393,7 @@ call $~lib/string/String#repeat local.tee $41 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14509,7 +14408,7 @@ call $~lib/string/String#repeat local.tee $40 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14524,7 +14423,7 @@ call $~lib/string/String#repeat local.tee $39 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14537,9 +14436,9 @@ i32.const 320 i32.const 2 call $~lib/string/String#repeat - local.tee $37 + local.tee $38 i32.const 10864 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14552,9 +14451,9 @@ i32.const 320 i32.const 3 call $~lib/string/String#repeat - local.tee $38 + local.tee $37 i32.const 10944 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14569,7 +14468,7 @@ call $~lib/string/String#repeat local.tee $42 i32.const 10976 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14584,7 +14483,7 @@ call $~lib/string/String#repeat local.tee $43 i32.const 11008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14599,7 +14498,7 @@ call $~lib/string/String#repeat local.tee $44 i32.const 11040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14614,7 +14513,7 @@ call $~lib/string/String#repeat local.tee $45 i32.const 11072 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14630,7 +14529,7 @@ call $~lib/string/String#replace local.tee $46 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14646,7 +14545,7 @@ call $~lib/string/String#replace local.tee $47 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14662,7 +14561,7 @@ call $~lib/string/String#replace local.tee $48 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14678,7 +14577,7 @@ call $~lib/string/String#replace local.tee $49 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14688,13 +14587,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 4608 i32.const 4576 call $~lib/string/String#replace local.tee $50 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14704,13 +14603,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 + i32.const 768 + i32.const 768 i32.const 4576 call $~lib/string/String#replace local.tee $51 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14720,13 +14619,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 i32.const 4576 call $~lib/string/String#replace local.tee $52 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14736,13 +14635,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 10448 i32.const 10448 call $~lib/string/String#replace local.tee $53 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14758,7 +14657,7 @@ call $~lib/string/String#replace local.tee $54 i32.const 11136 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14768,13 +14667,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4576 call $~lib/string/String#replace local.tee $55 i32.const 11168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14790,7 +14689,7 @@ call $~lib/string/String#replace local.tee $56 i32.const 11168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14800,13 +14699,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11264 i32.const 11296 call $~lib/string/String#replace local.tee $57 i32.const 11328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14816,13 +14715,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11264 i32.const 272 call $~lib/string/String#replace local.tee $58 i32.const 10448 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14834,11 +14733,11 @@ end i32.const 272 i32.const 272 - i32.const 800 + i32.const 768 call $~lib/string/String#replaceAll local.tee $59 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14848,13 +14747,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 4608 i32.const 4576 call $~lib/string/String#replaceAll local.tee $60 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14864,13 +14763,13 @@ call $~lib/builtins/abort unreachable end - i32.const 992 - i32.const 800 + i32.const 960 + i32.const 768 i32.const 4576 call $~lib/string/String#replaceAll local.tee $61 i32.const 11296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14881,12 +14780,12 @@ unreachable end i32.const 11360 - i32.const 800 + i32.const 768 i32.const 4576 call $~lib/string/String#replaceAll local.tee $62 i32.const 11408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14896,13 +14795,13 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 960 i32.const 10448 i32.const 10448 call $~lib/string/String#replaceAll local.tee $63 - i32.const 992 - call $~lib/string/String.__eq + i32.const 960 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14918,7 +14817,7 @@ call $~lib/string/String#replaceAll local.tee $64 i32.const 11472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14928,13 +14827,13 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 960 i32.const 10448 i32.const 11296 call $~lib/string/String#replaceAll local.tee $65 i32.const 11520 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14950,7 +14849,7 @@ call $~lib/string/String#replaceAll local.tee $66 i32.const 11616 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14960,13 +14859,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1248 i32.const 4576 call $~lib/string/String#replaceAll local.tee $67 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14982,7 +14881,7 @@ call $~lib/string/String#replaceAll local.tee $68 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -14992,13 +14891,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 11680 i32.const 4576 call $~lib/string/String#replaceAll local.tee $69 i32.const 11712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15014,7 +14913,7 @@ call $~lib/string/String#replaceAll local.tee $70 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15030,7 +14929,7 @@ call $~lib/string/String#replaceAll local.tee $71 i32.const 11744 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15046,7 +14945,7 @@ call $~lib/string/String#replaceAll local.tee $72 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15062,7 +14961,7 @@ call $~lib/string/String#replaceAll local.tee $73 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15078,7 +14977,7 @@ call $~lib/string/String#replaceAll local.tee $74 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15094,7 +14993,7 @@ call $~lib/string/String#replaceAll local.tee $75 i32.const 4576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15104,13 +15003,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 - i32.const 800 + i32.const 768 + i32.const 768 i32.const 4608 call $~lib/string/String#replaceAll local.tee $76 i32.const 4608 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15120,13 +15019,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 1216 i32.const 4608 call $~lib/string/String#replaceAll local.tee $77 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15136,13 +15035,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4576 call $~lib/string/String#replaceAll local.tee $78 i32.const 11776 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15152,13 +15051,13 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 272 call $~lib/string/String#replaceAll local.tee $79 - i32.const 800 - call $~lib/string/String.__eq + i32.const 768 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15180,7 +15079,7 @@ call $~lib/string/String#slice local.tee $80 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15196,7 +15095,7 @@ call $~lib/string/String#slice local.tee $81 i32.const 11856 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15212,7 +15111,7 @@ call $~lib/string/String#slice local.tee $82 i32.const 11888 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15228,7 +15127,7 @@ call $~lib/string/String#slice local.tee $83 i32.const 11920 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15244,7 +15143,7 @@ call $~lib/string/String#slice local.tee $84 i32.const 11952 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15260,7 +15159,7 @@ call $~lib/string/String#slice local.tee $85 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15276,7 +15175,7 @@ call $~lib/string/String#slice local.tee $86 i32.const 11984 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15292,7 +15191,7 @@ call $~lib/string/String#substr local.tee $87 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15308,7 +15207,7 @@ call $~lib/string/String#substr local.tee $88 i32.const 11856 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15324,7 +15223,7 @@ call $~lib/string/String#substr local.tee $89 i32.const 11888 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15340,7 +15239,7 @@ call $~lib/string/String#substr local.tee $90 i32.const 12032 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15356,7 +15255,7 @@ call $~lib/string/String#substr local.tee $91 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15372,7 +15271,7 @@ call $~lib/string/String#substr local.tee $92 i32.const 12064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15388,7 +15287,7 @@ call $~lib/string/String#substr local.tee $93 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15404,7 +15303,7 @@ call $~lib/string/String#substr local.tee $94 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15420,7 +15319,7 @@ call $~lib/string/String#substr local.tee $95 i32.const 12096 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15436,7 +15335,7 @@ call $~lib/string/String#substr local.tee $96 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15452,7 +15351,7 @@ call $~lib/string/String#substring local.tee $97 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15468,7 +15367,7 @@ call $~lib/string/String#substring local.tee $98 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15484,7 +15383,7 @@ call $~lib/string/String#substring local.tee $99 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15500,7 +15399,7 @@ call $~lib/string/String#substring local.tee $100 i32.const 11920 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15516,7 +15415,7 @@ call $~lib/string/String#substring local.tee $101 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15532,7 +15431,7 @@ call $~lib/string/String#substring local.tee $102 i32.const 12128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15548,7 +15447,7 @@ call $~lib/string/String#substring local.tee $103 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15564,7 +15463,7 @@ call $~lib/string/String#substring local.tee $104 i32.const 11808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15580,7 +15479,7 @@ call $~lib/string/String#substring local.tee $105 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15596,7 +15495,7 @@ call $~lib/string/String#substring local.tee $106 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -15627,7 +15526,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15669,7 +15568,7 @@ unreachable end i32.const 272 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -15687,7 +15586,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15725,7 +15624,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 12384 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -15745,7 +15644,7 @@ unreachable end i32.const 12384 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -15763,7 +15662,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15779,7 +15678,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15795,7 +15694,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15833,7 +15732,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -15849,7 +15748,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -15865,7 +15764,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -15885,7 +15784,7 @@ unreachable end i32.const 12480 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -15903,7 +15802,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15919,7 +15818,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15935,7 +15834,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15951,7 +15850,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -15971,7 +15870,7 @@ unreachable end i32.const 12512 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $109 @@ -15989,7 +15888,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16005,7 +15904,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16021,7 +15920,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16037,7 +15936,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16057,7 +15956,7 @@ unreachable end i32.const 12544 - i32.const 1056 + i32.const 1024 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split local.set $108 @@ -16075,7 +15974,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16091,7 +15990,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16107,7 +16006,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16123,7 +16022,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16142,7 +16041,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -16161,7 +16060,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16177,7 +16076,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16193,7 +16092,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16212,7 +16111,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 0 call $~lib/string/String#split @@ -16234,7 +16133,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 1 call $~lib/string/String#split @@ -16253,7 +16152,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16273,7 +16172,7 @@ unreachable end i32.const 12384 - i32.const 1056 + i32.const 1024 i32.const 1 call $~lib/string/String#split local.set $108 @@ -16291,7 +16190,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16310,7 +16209,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const 4 call $~lib/string/String#split @@ -16329,7 +16228,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16345,7 +16244,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16361,7 +16260,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16380,7 +16279,7 @@ call $~lib/builtins/abort unreachable end - i32.const 800 + i32.const 768 i32.const 272 i32.const -1 call $~lib/string/String#split @@ -16399,7 +16298,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16415,7 +16314,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16431,7 +16330,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $108 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $109 local.get $108 call $~lib/rt/pure/__release @@ -16451,7 +16350,7 @@ unreachable end i32.const 12384 - i32.const 1056 + i32.const 1024 i32.const -1 call $~lib/string/String#split local.set $109 @@ -16469,7 +16368,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16485,7 +16384,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 10416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16501,7 +16400,7 @@ call $~lib/array/Array<~lib/string/String>#__get local.tee $109 i32.const 11264 - call $~lib/string/String.__eq + call $~lib/string/String#_eq local.set $108 local.get $109 call $~lib/rt/pure/__release @@ -16526,7 +16425,7 @@ call $~lib/util/number/itoa32 local.tee $107 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16540,7 +16439,7 @@ call $~lib/util/number/itoa32 local.tee $109 i32.const 1488 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16554,7 +16453,7 @@ call $~lib/util/number/itoa32 local.tee $108 i32.const 12992 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16568,7 +16467,7 @@ call $~lib/util/number/itoa32 local.tee $110 i32.const 13024 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16581,8 +16480,8 @@ i32.const 123 call $~lib/util/number/itoa32 local.tee $111 - i32.const 864 - call $~lib/string/String.__eq + i32.const 832 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16596,7 +16495,7 @@ call $~lib/util/number/itoa32 local.tee $112 i32.const 13056 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16610,7 +16509,7 @@ call $~lib/util/number/itoa32 local.tee $113 i32.const 13088 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16624,7 +16523,7 @@ call $~lib/util/number/itoa32 local.tee $114 i32.const 13120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16638,7 +16537,7 @@ call $~lib/util/number/itoa32 local.tee $115 i32.const 13152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16652,7 +16551,7 @@ call $~lib/util/number/itoa32 local.tee $116 i32.const 13184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16666,7 +16565,7 @@ call $~lib/util/number/itoa32 local.tee $117 i32.const 13216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16680,7 +16579,7 @@ call $~lib/util/number/itoa32 local.tee $118 i32.const 13248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16694,7 +16593,7 @@ call $~lib/util/number/itoa32 local.tee $119 i32.const 13280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16708,7 +16607,7 @@ call $~lib/util/number/itoa32 local.tee $120 i32.const 13328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16722,7 +16621,7 @@ call $~lib/util/number/itoa32 local.tee $121 i32.const 13376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16736,7 +16635,7 @@ call $~lib/util/number/itoa32 local.tee $122 i32.const 13424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16750,7 +16649,7 @@ call $~lib/util/number/itoa32 local.tee $123 i32.const 13472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16764,7 +16663,7 @@ call $~lib/util/number/utoa32 local.tee $124 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16778,7 +16677,7 @@ call $~lib/util/number/utoa32 local.tee $125 i32.const 13504 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16792,7 +16691,7 @@ call $~lib/util/number/utoa32 local.tee $126 i32.const 13376 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16806,7 +16705,7 @@ call $~lib/util/number/utoa32 local.tee $127 i32.const 13536 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16820,7 +16719,7 @@ call $~lib/util/number/utoa32 local.tee $128 i32.const 13584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16834,7 +16733,7 @@ call $~lib/util/number/utoa64 local.tee $129 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16848,7 +16747,7 @@ call $~lib/util/number/utoa64 local.tee $130 i32.const 13024 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16861,8 +16760,8 @@ i64.const 123 call $~lib/util/number/utoa64 local.tee $131 - i32.const 864 - call $~lib/string/String.__eq + i32.const 832 + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16876,7 +16775,7 @@ call $~lib/util/number/utoa64 local.tee $132 i32.const 13088 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16890,7 +16789,7 @@ call $~lib/util/number/utoa64 local.tee $133 i32.const 13120 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16904,7 +16803,7 @@ call $~lib/util/number/utoa64 local.tee $134 i32.const 13152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16918,7 +16817,7 @@ call $~lib/util/number/utoa64 local.tee $135 i32.const 13216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16932,7 +16831,7 @@ call $~lib/util/number/utoa64 local.tee $136 i32.const 13632 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16946,7 +16845,7 @@ call $~lib/util/number/utoa64 local.tee $137 i32.const 13664 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16960,7 +16859,7 @@ call $~lib/util/number/utoa64 local.tee $138 i32.const 13584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16974,7 +16873,7 @@ call $~lib/util/number/utoa64 local.tee $139 i32.const 13712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -16988,7 +16887,7 @@ call $~lib/util/number/utoa64 local.tee $140 i32.const 13760 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17002,7 +16901,7 @@ call $~lib/util/number/utoa64 local.tee $141 i32.const 13808 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17016,7 +16915,7 @@ call $~lib/util/number/utoa64 local.tee $142 i32.const 13856 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17030,7 +16929,7 @@ call $~lib/util/number/utoa64 local.tee $143 i32.const 13904 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17044,7 +16943,7 @@ call $~lib/util/number/utoa64 local.tee $144 i32.const 13952 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17058,7 +16957,7 @@ call $~lib/util/number/utoa64 local.tee $145 i32.const 14000 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17072,7 +16971,7 @@ call $~lib/util/number/utoa64 local.tee $146 i32.const 14048 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17086,7 +16985,7 @@ call $~lib/util/number/utoa64 local.tee $147 i32.const 14112 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17100,7 +16999,7 @@ call $~lib/util/number/utoa64 local.tee $148 i32.const 14176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17114,7 +17013,7 @@ call $~lib/util/number/utoa64 local.tee $149 i32.const 14240 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17128,7 +17027,7 @@ call $~lib/util/number/itoa64 local.tee $150 i32.const 1424 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17142,7 +17041,7 @@ call $~lib/util/number/itoa64 local.tee $151 i32.const 14304 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17156,7 +17055,7 @@ call $~lib/util/number/itoa64 local.tee $152 i32.const 13584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17170,7 +17069,7 @@ call $~lib/util/number/itoa64 local.tee $153 i32.const 13712 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17184,7 +17083,7 @@ call $~lib/util/number/itoa64 local.tee $154 i32.const 14336 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17198,7 +17097,7 @@ call $~lib/util/number/itoa64 local.tee $155 i32.const 13760 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17212,7 +17111,7 @@ call $~lib/util/number/itoa64 local.tee $156 i32.const 14384 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17226,7 +17125,7 @@ call $~lib/util/number/itoa64 local.tee $157 i32.const 14432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17240,7 +17139,7 @@ call $~lib/util/number/itoa64 local.tee $158 i32.const 14480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17254,7 +17153,7 @@ call $~lib/util/number/itoa64 local.tee $159 i32.const 14528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17268,7 +17167,7 @@ call $~lib/util/number/itoa64 local.tee $160 i32.const 14592 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17282,7 +17181,7 @@ call $~lib/util/number/itoa64 local.tee $161 i32.const 14656 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17296,7 +17195,7 @@ call $~lib/util/number/dtoa local.tee $162 i32.const 14720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17310,7 +17209,7 @@ call $~lib/util/number/dtoa local.tee $163 i32.const 14720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17324,7 +17223,7 @@ call $~lib/util/number/dtoa local.tee $164 i32.const 4832 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17338,7 +17237,7 @@ call $~lib/util/number/dtoa local.tee $165 i32.const 14752 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17352,7 +17251,7 @@ call $~lib/util/number/dtoa local.tee $166 i32.const 6048 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17366,7 +17265,7 @@ call $~lib/util/number/dtoa local.tee $167 i32.const 5344 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17380,7 +17279,7 @@ call $~lib/util/number/dtoa local.tee $168 i32.const 15760 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17394,7 +17293,7 @@ call $~lib/util/number/dtoa local.tee $169 i32.const 5408 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17408,7 +17307,7 @@ call $~lib/util/number/dtoa local.tee $170 i32.const 15824 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17422,7 +17321,7 @@ call $~lib/util/number/dtoa local.tee $171 i32.const 15888 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17436,7 +17335,7 @@ call $~lib/util/number/dtoa local.tee $172 i32.const 15952 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17450,7 +17349,7 @@ call $~lib/util/number/dtoa local.tee $173 i32.const 16016 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17464,7 +17363,7 @@ call $~lib/util/number/dtoa local.tee $174 i32.const 16064 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17478,7 +17377,7 @@ call $~lib/util/number/dtoa local.tee $175 i32.const 16128 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17492,7 +17391,7 @@ call $~lib/util/number/dtoa local.tee $176 i32.const 16192 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17506,7 +17405,7 @@ call $~lib/util/number/dtoa local.tee $177 i32.const 5472 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17520,7 +17419,7 @@ call $~lib/util/number/dtoa local.tee $178 i32.const 16256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17534,7 +17433,7 @@ call $~lib/util/number/dtoa local.tee $179 i32.const 2480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17548,7 +17447,7 @@ call $~lib/util/number/dtoa local.tee $180 i32.const 16288 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17562,7 +17461,7 @@ call $~lib/util/number/dtoa local.tee $181 i32.const 16320 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17576,7 +17475,7 @@ call $~lib/util/number/dtoa local.tee $182 i32.const 16352 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17590,7 +17489,7 @@ call $~lib/util/number/dtoa local.tee $183 i32.const 16400 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17604,7 +17503,7 @@ call $~lib/util/number/dtoa local.tee $184 i32.const 16432 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17618,7 +17517,7 @@ call $~lib/util/number/dtoa local.tee $185 i32.const 16480 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17632,7 +17531,7 @@ call $~lib/util/number/dtoa local.tee $186 i32.const 16528 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17646,7 +17545,7 @@ call $~lib/util/number/dtoa local.tee $187 i32.const 16576 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17660,7 +17559,7 @@ call $~lib/util/number/dtoa local.tee $188 i32.const 2704 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17674,7 +17573,7 @@ call $~lib/util/number/dtoa local.tee $189 i32.const 16608 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17688,7 +17587,7 @@ call $~lib/util/number/dtoa local.tee $190 i32.const 14752 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17702,7 +17601,7 @@ call $~lib/util/number/dtoa local.tee $191 i32.const 6048 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17716,7 +17615,7 @@ call $~lib/util/number/dtoa local.tee $192 i32.const 16640 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17730,7 +17629,7 @@ call $~lib/util/number/dtoa local.tee $193 i32.const 16672 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17744,7 +17643,7 @@ call $~lib/util/number/dtoa local.tee $194 i32.const 16704 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17758,7 +17657,7 @@ call $~lib/util/number/dtoa local.tee $195 i32.const 16736 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17772,7 +17671,7 @@ call $~lib/util/number/dtoa local.tee $196 i32.const 14720 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17786,7 +17685,7 @@ call $~lib/util/number/dtoa local.tee $197 i32.const 16768 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17800,7 +17699,7 @@ call $~lib/util/number/dtoa local.tee $198 i32.const 16816 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17814,7 +17713,7 @@ call $~lib/util/number/dtoa local.tee $199 i32.const 16880 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17828,7 +17727,7 @@ call $~lib/util/number/dtoa local.tee $200 i32.const 16944 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17842,7 +17741,7 @@ call $~lib/util/number/dtoa local.tee $201 i32.const 16256 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17856,7 +17755,7 @@ call $~lib/util/number/dtoa local.tee $202 i32.const 17008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17870,7 +17769,7 @@ call $~lib/util/number/dtoa local.tee $203 i32.const 17040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17884,7 +17783,7 @@ call $~lib/util/number/dtoa local.tee $204 i32.const 17104 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17898,7 +17797,7 @@ call $~lib/util/number/dtoa local.tee $205 i32.const 17168 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17912,7 +17811,7 @@ call $~lib/util/number/dtoa local.tee $206 i32.const 17216 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17926,7 +17825,7 @@ call $~lib/util/number/dtoa local.tee $207 i32.const 17248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17940,7 +17839,7 @@ call $~lib/util/number/dtoa local.tee $208 i32.const 17296 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17954,7 +17853,7 @@ call $~lib/util/number/dtoa local.tee $209 i32.const 17328 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17968,7 +17867,7 @@ call $~lib/util/number/dtoa local.tee $210 i32.const 17360 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -17982,7 +17881,7 @@ call $~lib/util/number/dtoa local.tee $211 i32.const 17392 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 1cfc7648e2..e619d8050a 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -316,7 +316,7 @@ if i32.const 1120 i32.const 1168 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -483,37 +483,23 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $~lib/map/Map<~lib/string/String,usize>#find (; 10 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -540,7 +526,7 @@ local.get $0 i32.load i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq end if local.get $0 @@ -1031,14 +1017,16 @@ ) (func $~lib/symbol/_Symbol.for (; 17 ;) (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/symbol/stringToId + local.tee $0 if - global.get $~lib/symbol/stringToId + local.get $0 i32.const 1040 call $~lib/util/hash/hashStr call $~lib/map/Map<~lib/string/String,usize>#find if - global.get $~lib/symbol/stringToId + local.get $0 i32.const 1040 call $~lib/util/hash/hashStr call $~lib/map/Map<~lib/string/String,usize>#find @@ -1085,46 +1073,46 @@ i32.const 24 i32.const 4 call $~lib/rt/stub/__alloc - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 - local.get $0 + local.get $1 call $~lib/map/Map<~lib/string/String,usize>#clear - local.get $0 + local.get $1 global.set $~lib/symbol/idToString end global.get $~lib/symbol/nextId - local.tee $0 + local.tee $1 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $0 + local.get $1 i32.eqz if unreachable end - global.get $~lib/symbol/stringToId local.get $0 + local.get $1 call $~lib/map/Map<~lib/string/String,usize>#set global.get $~lib/symbol/idToString - local.get $0 + local.get $1 call $~lib/map/Map#set - local.get $0 + local.get $1 ) (func $~lib/map/Map#has (; 18 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1155,16 +1143,18 @@ i32.load offset=4 ) (func $~lib/symbol/_Symbol.keyFor (; 20 ;) (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/symbol/idToString + local.tee $1 if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#has else i32.const 0 end if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#get else @@ -1344,7 +1334,7 @@ end end ) - (func $~lib/string/String.__concat (; 22 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 22 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1359,10 +1349,6 @@ i32.shl local.tee $2 local.get $1 - i32.const 1840 - local.get $1 - select - local.tee $1 call $~lib/string/String#get:length i32.const 1 i32.shl @@ -1463,9 +1449,9 @@ i32.const 1344 end end - call $~lib/string/String.__concat + call $~lib/string/String._add i32.const 1872 - call $~lib/string/String.__concat + call $~lib/string/String._add ) (func $start:std/symbol (; 24 ;) (local $0 i32) @@ -1510,6 +1496,19 @@ call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 global.get $std/symbol/key1 + local.tee $0 + i32.eqz + i32.const 1 + i32.or + if (result i32) + local.get $0 + i32.eqz + else + local.get $0 + i32.const 0 + call $~lib/string/String#_eq + end + i32.eqz if i32.const 0 i32.const 1072 @@ -1519,6 +1518,19 @@ unreachable end global.get $std/symbol/key2 + local.tee $0 + i32.eqz + i32.const 1 + i32.or + if (result i32) + local.get $0 + i32.eqz + else + local.get $0 + i32.const 0 + call $~lib/string/String#_eq + end + i32.eqz if i32.const 0 i32.const 1072 @@ -1557,7 +1569,7 @@ global.set $std/symbol/key4 global.get $std/symbol/key3 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1569,7 +1581,7 @@ end global.get $std/symbol/key3 global.get $std/symbol/key4 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1582,7 +1594,7 @@ call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString i32.const 1904 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1595,7 +1607,7 @@ global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString i32.const 1936 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1612,7 +1624,7 @@ i32.const 1 call $~lib/symbol/_Symbol#toString i32.const 1984 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -1625,7 +1637,7 @@ global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString i32.const 2048 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index dc2f17e3d3..f8e55bde95 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -411,7 +411,7 @@ if i32.const 112 i32.const 160 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -590,8 +590,6 @@ i32.const -2128831035 local.set $1 local.get $0 - i32.const 0 - i32.ne if i32.const 0 local.set $2 @@ -752,78 +750,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $~lib/map/Map<~lib/string/String,usize>#find (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -857,7 +815,7 @@ local.get $3 i32.load local.get $1 - call $~lib/string/String.__eq + call $~lib/string/String#_eq else i32.const 0 end @@ -1609,68 +1567,90 @@ (func $~lib/symbol/_Symbol.for (; 25 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 global.get $~lib/symbol/stringToId + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 i32.eqz if i32.const 0 call $~lib/map/Map<~lib/string/String,usize>#constructor - local.set $1 - global.get $~lib/symbol/stringToId - call $~lib/rt/stub/__release + local.set $2 local.get $1 + call $~lib/rt/stub/__release + local.get $2 + local.tee $1 + local.tee $2 + global.get $~lib/symbol/stringToId + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $3 + call $~lib/rt/stub/__release + end + local.get $2 global.set $~lib/symbol/stringToId i32.const 0 call $~lib/map/Map#constructor - local.set $1 + local.set $3 global.get $~lib/symbol/idToString call $~lib/rt/stub/__release - local.get $1 + local.get $3 global.set $~lib/symbol/idToString else - global.get $~lib/symbol/stringToId + local.get $1 local.get $0 call $~lib/map/Map<~lib/string/String,usize>#has if - global.get $~lib/symbol/stringToId + local.get $1 local.get $0 call $~lib/map/Map<~lib/string/String,usize>#get - local.set $1 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $3 return end end global.get $~lib/symbol/nextId - local.tee $1 + local.tee $3 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $1 - local.set $2 - local.get $2 + local.get $3 + local.set $4 + local.get $4 i32.eqz if unreachable end - global.get $~lib/symbol/stringToId + local.get $1 local.get $0 - local.get $2 + local.get $4 call $~lib/map/Map<~lib/string/String,usize>#set call $~lib/rt/stub/__release global.get $~lib/symbol/idToString - local.get $2 + local.get $4 local.get $0 call $~lib/map/Map#set call $~lib/rt/stub/__release - local.get $2 - local.set $1 + local.get $4 + local.set $3 local.get $0 call $~lib/rt/stub/__release local.get $1 + call $~lib/rt/stub/__release + local.get $3 ) (func $~lib/map/Map#has (; 26 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1716,24 +1696,33 @@ call $~lib/rt/stub/__retain ) (func $~lib/symbol/_Symbol.keyFor (; 28 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) global.get $~lib/symbol/idToString + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 i32.const 0 i32.ne if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#has else i32.const 0 end if (result i32) - global.get $~lib/symbol/idToString + local.get $1 local.get $0 call $~lib/map/Map#get else i32.const 0 call $~lib/rt/stub/__retain end + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) (func $~lib/util/memory/memcpy (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2985,77 +2974,57 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 - local.get $1 - i32.const 0 - i32.eq - if - i32.const 832 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - local.set $1 - end local.get $0 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 336 call $~lib/rt/stub/__retain - local.set $2 + local.set $5 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 return end - local.get $6 + local.get $4 i32.const 1 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain - local.set $7 - local.get $7 + local.set $6 + local.get $6 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $6 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 + local.get $6 + local.set $5 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $5 ) - (func $~lib/string/String.__concat (; 32 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String._add (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3261,10 +3230,10 @@ end i32.const 800 local.get $2 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $3 i32.const 864 - call $~lib/string/String.__concat + call $~lib/string/String._add local.tee $4 local.set $5 local.get $3 @@ -3331,8 +3300,21 @@ call $~lib/symbol/_Symbol.keyFor global.set $std/symbol/key2 global.get $std/symbol/key1 + local.tee $0 + i32.eqz i32.const 0 - i32.eq + local.tee $1 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $0 + local.get $1 + call $~lib/string/String#_eq + end i32.eqz if i32.const 0 @@ -3343,8 +3325,21 @@ unreachable end global.get $std/symbol/key2 + local.tee $0 + i32.eqz i32.const 0 - i32.eq + local.tee $1 + i32.eqz + i32.or + if (result i32) + local.get $0 + local.get $1 + i32.eq + else + local.get $0 + local.get $1 + call $~lib/string/String#_eq + end i32.eqz if i32.const 0 @@ -3386,7 +3381,7 @@ global.set $std/symbol/key4 global.get $std/symbol/key3 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3398,7 +3393,7 @@ end global.get $std/symbol/key3 global.get $std/symbol/key4 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3413,7 +3408,7 @@ call $~lib/symbol/_Symbol#toString local.tee $0 i32.const 896 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3427,7 +3422,7 @@ call $~lib/symbol/_Symbol#toString local.tee $1 i32.const 928 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3445,7 +3440,7 @@ call $~lib/symbol/_Symbol#toString local.tee $2 i32.const 976 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -3459,7 +3454,7 @@ call $~lib/symbol/_Symbol#toString local.tee $3 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index d29c1b9471..d1762dd832 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3187,7 +3187,7 @@ if i32.const 1376 i32.const 1536 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -3385,7 +3385,7 @@ if i32.const 1376 i32.const 1536 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -16659,25 +16659,9 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 246 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 246 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 call $~lib/string/String#get:length local.tee $2 local.get $1 @@ -19297,7 +19281,7 @@ if i32.const 1040 i32.const 1088 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable @@ -31167,14 +31151,14 @@ call $~lib/typedarray/Int8Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Int8Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31209,14 +31193,14 @@ call $~lib/typedarray/Uint8Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint8Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31251,14 +31235,14 @@ call $~lib/typedarray/Uint8Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint8Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31293,14 +31277,14 @@ call $~lib/typedarray/Int16Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Int16Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31335,14 +31319,14 @@ call $~lib/typedarray/Uint16Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint16Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31377,14 +31361,14 @@ call $~lib/typedarray/Int32Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Int32Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31419,14 +31403,14 @@ call $~lib/typedarray/Uint32Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint32Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31461,14 +31445,14 @@ call $~lib/typedarray/Int64Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Int64Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31503,14 +31487,14 @@ call $~lib/typedarray/Uint64Array#join local.tee $0 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner12 local.get $1 call $~lib/typedarray/Uint64Array#join local.tee $29 i32.const 3008 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner13 local.get $0 @@ -31545,14 +31529,14 @@ call $~lib/typedarray/Float32Array#join local.tee $0 i32.const 4176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner14 local.get $1 call $~lib/typedarray/Float32Array#join local.tee $29 i32.const 4176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner15 local.get $0 @@ -31587,14 +31571,14 @@ call $~lib/typedarray/Float64Array#join local.tee $0 i32.const 4176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner14 local.get $1 call $~lib/typedarray/Float64Array#join local.tee $29 i32.const 4176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz br_if $folding-inner15 local.get $0 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 199db6a10c..9642ce4242 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -5103,7 +5103,7 @@ if i32.const 368 i32.const 528 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -5410,7 +5410,7 @@ if i32.const 368 i32.const 528 - i32.const 104 + i32.const 107 i32.const 42 call $~lib/builtins/abort unreachable @@ -32375,78 +32375,38 @@ call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/string/String.__eq (; 483 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 483 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $3 ) (func $~lib/typedarray/Int8Array#toString (; 484 ;) (param $0 i32) (result i32) local.get $0 @@ -32489,7 +32449,7 @@ call $~lib/typedarray/Int8Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32503,7 +32463,7 @@ call $~lib/typedarray/Int8Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32816,7 +32776,7 @@ call $~lib/typedarray/Uint8Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32830,7 +32790,7 @@ call $~lib/typedarray/Uint8Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32906,7 +32866,7 @@ call $~lib/typedarray/Uint8ClampedArray#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -32920,7 +32880,7 @@ call $~lib/typedarray/Uint8ClampedArray#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33233,7 +33193,7 @@ call $~lib/typedarray/Int16Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33247,7 +33207,7 @@ call $~lib/typedarray/Int16Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33526,7 +33486,7 @@ call $~lib/typedarray/Uint16Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33540,7 +33500,7 @@ call $~lib/typedarray/Uint16Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33829,7 +33789,7 @@ call $~lib/typedarray/Int32Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -33843,7 +33803,7 @@ call $~lib/typedarray/Int32Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -34112,7 +34072,7 @@ call $~lib/typedarray/Uint32Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -34126,7 +34086,7 @@ call $~lib/typedarray/Uint32Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -34712,7 +34672,7 @@ call $~lib/typedarray/Int64Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -34726,7 +34686,7 @@ call $~lib/typedarray/Int64Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -35087,7 +35047,7 @@ call $~lib/typedarray/Uint64Array#join local.tee $2 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -35101,7 +35061,7 @@ call $~lib/typedarray/Uint64Array#toString local.tee $3 i32.const 2416 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -36708,7 +36668,7 @@ call $~lib/typedarray/Float32Array#join local.tee $2 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -36722,7 +36682,7 @@ call $~lib/typedarray/Float32Array#toString local.tee $3 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -36941,7 +36901,7 @@ call $~lib/typedarray/Float64Array#join local.tee $2 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -36955,7 +36915,7 @@ call $~lib/typedarray/Float64Array#toString local.tee $3 i32.const 3584 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 @@ -36982,7 +36942,7 @@ if i32.const 32 i32.const 80 - i32.const 54 + i32.const 56 i32.const 43 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index eb673b1880..8d5cb37a63 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -7,8 +7,8 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1024) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r") - (data (i32.const 1056) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") - (data (i32.const 1088) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data (i32.const 1056) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") + (data (i32.const 1104) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") (data (i32.const 1136) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") (data (i32.const 1168) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") (data (i32.const 1200) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001") @@ -104,72 +104,70 @@ end i32.const 0 ) - (func $~lib/string/String.__eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 3 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 + call $~lib/string/String#get:length + local.tee $2 local.get $1 - i32.eq + call $~lib/string/String#get:length + i32.ne if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - call $~lib/string/String#get:length - local.tee $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 return end - i32.const 0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz ) (func $start:typeof (; 4 ;) (local $0 i32) (local $1 i32) - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq + i32.const 1040 + i32.const 1040 + call $~lib/string/String#_eq + i32.eqz + if + i32.const 0 + i32.const 1072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1120 + i32.const 1120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq + i32.const 1120 + i32.const 1120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq + i32.const 1120 + i32.const 1120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -177,11 +175,11 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -189,11 +187,11 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -201,23 +199,23 @@ end i32.const 1184 i32.const 1184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq + i32.const 1120 + i32.const 1120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -225,11 +223,11 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -237,11 +235,11 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -249,11 +247,11 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -261,11 +259,11 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -273,11 +271,11 @@ end i32.const 1184 i32.const 1184 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -285,11 +283,11 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -297,11 +295,11 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -309,11 +307,11 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -321,11 +319,11 @@ end i32.const 1040 i32.const 1040 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -333,11 +331,11 @@ end i32.const 1248 i32.const 1248 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -345,11 +343,11 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -409,13 +407,13 @@ i32.store i32.const 1328 global.set $typeof/c - i32.const 1072 - i32.const 1072 - call $~lib/string/String.__eq + i32.const 1120 + i32.const 1120 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -423,11 +421,11 @@ end i32.const 1152 i32.const 1152 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -435,11 +433,11 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -447,11 +445,11 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -459,11 +457,11 @@ end i32.const 1280 i32.const 1280 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 1104 + i32.const 1072 i32.const 48 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 5214258fb5..a404e73055 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -8,8 +8,8 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data (i32.const 48) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") - (data (i32.const 80) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 48) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 96) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t\00") (data (i32.const 128) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00") (data (i32.const 160) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n\00") (data (i32.const 192) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\001\00") @@ -17,8 +17,8 @@ (data (i32.const 256) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00") (table $0 2 funcref) (elem (i32.const 1) $start:typeof~anonymous|0) - (global $typeof/SomeNamespace.a i32 (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $typeof/SomeNamespace.a i32 (i32.const 1)) (global $typeof/b (mut i32) (i32.const 1)) (global $typeof/i (mut i32) (i32.const 1)) (global $typeof/f (mut f32) (f32.const 1)) @@ -36,10 +36,7 @@ (func $~lib/rt/stub/__retain (; 1 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 2 ;) (param $0 i32) - nop - ) - (func $~lib/string/String#get:length (; 3 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 2 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -47,6 +44,9 @@ i32.const 1 i32.shr_u ) + (func $~lib/rt/stub/__release (; 3 ;) (param $0 i32) + nop + ) (func $~lib/util/string/compareImpl (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) @@ -169,78 +169,38 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#_eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 call $~lib/string/String#get:length - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $1 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $2 + local.get $3 ) (func $start:typeof~anonymous|0 (; 6 ;) nop @@ -365,37 +325,49 @@ local.get $0 ) (func $start:typeof (; 10 ;) - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq + i32.const 32 + i32.const 32 + call $~lib/string/String#_eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 112 + i32.const 112 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq + i32.const 112 + i32.const 112 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq + i32.const 112 + i32.const 112 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -403,11 +375,11 @@ end i32.const 144 i32.const 144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -415,11 +387,11 @@ end i32.const 144 i32.const 144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -427,23 +399,23 @@ end i32.const 176 i32.const 176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq + i32.const 112 + i32.const 112 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 20 i32.const 1 call $~lib/builtins/abort @@ -451,11 +423,11 @@ end i32.const 32 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -463,11 +435,11 @@ end i32.const 32 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -475,11 +447,11 @@ end i32.const 32 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -487,11 +459,11 @@ end i32.const 240 i32.const 240 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -499,11 +471,11 @@ end i32.const 176 i32.const 176 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -511,11 +483,11 @@ end i32.const 32 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -523,11 +495,11 @@ end i32.const 32 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -535,11 +507,11 @@ end i32.const 32 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -547,11 +519,11 @@ end i32.const 32 i32.const 32 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -559,11 +531,11 @@ end i32.const 240 i32.const 240 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -571,11 +543,11 @@ end i32.const 144 i32.const 144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -594,13 +566,13 @@ i32.const 0 call $typeof/SomeClass#constructor global.set $typeof/c - i32.const 64 - i32.const 64 - call $~lib/string/String.__eq + i32.const 112 + i32.const 112 + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -608,11 +580,11 @@ end i32.const 144 i32.const 144 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -620,11 +592,11 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -632,11 +604,11 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -644,11 +616,11 @@ end i32.const 272 i32.const 272 - call $~lib/string/String.__eq + call $~lib/string/String#_eq i32.eqz if i32.const 0 - i32.const 96 + i32.const 64 i32.const 48 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index a29ce3be00..c8bf624ed3 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -2,14 +2,17 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00") (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00") (table $0 1 funcref) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "test" (func $wasi/abort/test)) @@ -24,7 +27,179 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) + nop + ) + (func $~lib/util/string/compareImpl (; 5 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String#_ne (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.UTF8.encodeUnsafe (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -240,7 +415,7 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 5 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -295,10 +470,7 @@ end unreachable ) - (func $~lib/rt/stub/__release (; 6 ;) (param $0 i32) - nop - ) - (func $~lib/wasi/index/abort (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/wasi/index/abort (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -323,8 +495,21 @@ i32.add local.set $4 local.get $0 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $0 @@ -344,8 +529,21 @@ i32.add local.set $4 local.get $1 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $1 @@ -367,9 +565,9 @@ i32.store8 local.get $2 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|0 @@ -390,34 +588,34 @@ local.get $5 local.set $2 local.get $2 - local.set $7 - local.get $7 + local.set $6 + local.get $6 br_if $do-continue|0 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 - local.tee $7 + local.tee $6 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $6 i32.const 58 i32.store8 local.get $3 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|1 local.get $3 i32.const 10 i32.div_u - local.set $7 + local.set $6 local.get $4 i32.const 1 i32.sub @@ -428,7 +626,7 @@ i32.rem_u i32.add i32.store8 - local.get $7 + local.get $6 local.set $3 local.get $3 local.set $8 @@ -436,7 +634,7 @@ br_if $do-continue|1 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 @@ -464,7 +662,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $wasi/abort/test (; 8 ;) + (func $wasi/abort/test (; 11 ;) i32.const 0 i32.eqz if @@ -476,7 +674,7 @@ unreachable end ) - (func $~start (; 9 ;) + (func $~start (; 12 ;) nop ) ) diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 5ae5583204..20920ad83b 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -72,7 +72,15 @@ i32.shr_u i32.xor ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 5 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 5 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/string/String.UTF8.encodeUnsafe (; 6 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -247,7 +255,7 @@ i32.const 23 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 6 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 7 ;) (param $0 i32) (result i32) local.get $0 i32.const 10 i32.ge_u @@ -289,7 +297,7 @@ i32.lt_u select ) - (func $~lib/wasi/index/abort (; 7 ;) + (func $~lib/wasi/index/abort (; 8 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -308,20 +316,18 @@ i32.const 19 i32.const 544106784 i32.store - i32.const 1036 - i32.load - i32.const 1 - i32.shr_u + i32.const 1040 + call $~lib/string/String#get:length call $~lib/string/String.UTF8.encodeUnsafe i32.const 23 i32.add - local.tee $2 + local.tee $3 i32.const 40 i32.store8 i32.const 1406 call $~lib/util/number/decimalCount32 local.tee $4 - local.get $2 + local.get $3 i32.const 1 i32.add i32.add @@ -394,7 +400,7 @@ i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) - (func $~lib/math/NativeMath.random (; 8 ;) (result f64) + (func $~lib/math/NativeMath.random (; 9 ;) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded @@ -490,10 +496,10 @@ f64.const 1 f64.sub ) - (func $wasi/seed/test (; 9 ;) (result f64) + (func $wasi/seed/test (; 10 ;) (result f64) call $~lib/math/NativeMath.random ) - (func $~start (; 10 ;) + (func $~start (; 11 ;) nop ) ) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index 87381d17e7..cd02d26226 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -1,12 +1,13 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_none (func (param i64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) @@ -19,6 +20,7 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "_start" (func $~start)) (export "memory" (memory $0)) (export "test" (func $wasi/seed/test)) @@ -126,7 +128,179 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.UTF8.encodeUnsafe (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/stub/__release (; 8 ;) (param $0 i32) + nop + ) + (func $~lib/util/string/compareImpl (; 9 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String#_ne (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/string/String.UTF8.encodeUnsafe (; 12 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -342,7 +516,7 @@ local.get $2 i32.sub ) - (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 13 ;) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -397,10 +571,7 @@ end unreachable ) - (func $~lib/rt/stub/__release (; 10 ;) (param $0 i32) - nop - ) - (func $~lib/wasi/index/abort (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/wasi/index/abort (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -425,8 +596,21 @@ i32.add local.set $4 local.get $0 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $0 @@ -446,8 +630,21 @@ i32.add local.set $4 local.get $1 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $1 @@ -469,9 +666,9 @@ i32.store8 local.get $2 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|0 @@ -492,34 +689,34 @@ local.get $5 local.set $2 local.get $2 - local.set $7 - local.get $7 + local.set $6 + local.get $6 br_if $do-continue|0 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 - local.tee $7 + local.tee $6 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $6 i32.const 58 i32.store8 local.get $3 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|1 local.get $3 i32.const 10 i32.div_u - local.set $7 + local.set $6 local.get $4 i32.const 1 i32.sub @@ -530,7 +727,7 @@ i32.rem_u i32.add i32.store8 - local.get $7 + local.get $6 local.set $3 local.get $3 local.set $8 @@ -538,7 +735,7 @@ br_if $do-continue|1 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 @@ -566,7 +763,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/math/NativeMath.seedRandom (; 12 ;) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 15 ;) (param $0 i64) i32.const 1 global.set $~lib/math/random_seeded local.get $0 @@ -618,7 +815,7 @@ unreachable end ) - (func $~lib/math/NativeMath.random (; 13 ;) (result f64) + (func $~lib/math/NativeMath.random (; 16 ;) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) @@ -670,10 +867,10 @@ f64.const 1 f64.sub ) - (func $wasi/seed/test (; 14 ;) (result f64) + (func $wasi/seed/test (; 17 ;) (result f64) call $~lib/math/NativeMath.random ) - (func $~start (; 15 ;) + (func $~start (; 18 ;) nop ) ) diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index deffdd1b59..ef80052803 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -1,13 +1,14 @@ (module (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_f64_=>_i32 (func (param i32 i32 f64) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -3245,7 +3246,176 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/wasi/index/abort (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/util/string/compareImpl (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + local.set $10 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $10 + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + ) + (func $~lib/string/String#_eq (; 18 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/string/String#_ne (; 19 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/string/String#_eq + i32.eqz + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/wasi/index/abort (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3270,8 +3440,21 @@ i32.add local.set $4 local.get $0 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $0 @@ -3291,8 +3474,21 @@ i32.add local.set $4 local.get $1 + local.tee $5 + i32.eqz i32.const 0 - i32.ne + local.tee $6 + i32.eqz + i32.or + if (result i32) + local.get $5 + local.get $6 + i32.ne + else + local.get $5 + local.get $6 + call $~lib/string/String#_ne + end if local.get $4 local.get $1 @@ -3314,9 +3510,9 @@ i32.store8 local.get $2 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|0 @@ -3337,34 +3533,34 @@ local.get $5 local.set $2 local.get $2 - local.set $7 - local.get $7 + local.set $6 + local.get $6 br_if $do-continue|0 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 - local.tee $7 + local.tee $6 i32.const 1 i32.add local.set $4 - local.get $7 + local.get $6 i32.const 58 i32.store8 local.get $3 call $~lib/util/number/decimalCount32 - local.set $6 + local.set $7 local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 loop $do-continue|1 local.get $3 i32.const 10 i32.div_u - local.set $7 + local.set $6 local.get $4 i32.const 1 i32.sub @@ -3375,7 +3571,7 @@ i32.rem_u i32.add i32.store8 - local.get $7 + local.get $6 local.set $3 local.get $3 local.set $8 @@ -3383,7 +3579,7 @@ br_if $do-continue|1 end local.get $4 - local.get $6 + local.get $7 i32.add local.set $4 local.get $4 @@ -3411,7 +3607,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/rt/stub/__free (; 18 ;) (param $0 i32) + (func $~lib/rt/stub/__free (; 21 ;) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -3461,7 +3657,7 @@ global.set $~lib/rt/stub/offset end ) - (func $~lib/wasi/index/trace (; 19 ;) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) + (func $~lib/wasi/index/trace (; 22 ;) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (local $7 i32) (local $8 i32) (local $9 i32) @@ -3670,7 +3866,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $start:wasi/trace (; 20 ;) + (func $start:wasi/trace (; 23 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -3707,7 +3903,7 @@ f64.neg call $~lib/wasi/index/trace ) - (func $~start (; 21 ;) + (func $~start (; 24 ;) global.get $~started if return