diff --git a/cli/asc.js b/cli/asc.js index 40a02a20..7e0ec6f3 100644 --- a/cli/asc.js +++ b/cli/asc.js @@ -354,6 +354,22 @@ exports.main = function main(argv, options, callback) { } } + // Include runtime template before entry files so its setup runs first + { + let templateName = String(args.runtime); + let templateText = exports.libraryFiles["rt/index-" + templateName]; + if (templateText == null) { + templateText = readFile(templateName + ".ts", baseDir); + if (templateText == null) { + return callback(Error("Runtime template '" + templateName + "' not found.")); + } + } + stats.parseCount++; + stats.parseTime += measure(() => { + parser = assemblyscript.parseFile(templateText, templateName, true, parser); + }); + } + // Include entry files for (let i = 0, k = argv.length; i < k; ++i) { const filename = argv[i]; @@ -379,22 +395,6 @@ exports.main = function main(argv, options, callback) { }); } - // Include runtime template - { - let templateName = String(args.runtime); - let templateText = exports.libraryFiles["rt/index-" + templateName]; - if (templateText == null) { - templateText = readFile(templateName + ".ts", baseDir); - if (templateText == null) { - return callback(Error("Runtime template '" + templateName + "' not found.")); - } - } - stats.parseCount++; - stats.parseTime += measure(() => { - parser = assemblyscript.parseFile(templateText, templateName, true, parser); - }); - } - // Parse entry files { let code = parseBacklog(); diff --git a/src/builtins.ts b/src/builtins.ts index 5a4ee569..44f687c6 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -3577,119 +3577,6 @@ export function compileCall( compiler.currentType = Type.void; return module.createCall(BuiltinSymbols.visit_members, [ arg0, arg1 ], NativeType.None); } - // The following simply intercept the respective runtime calls in order to force - // compilation of runtime functionality to the bottom of generated binaries. - case compiler.program.visitInstance.internalName: { - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 2, reportNode, compiler) // ref, cookie - ) { - compiler.currentType = Type.void; - return module.createUnreachable(); - } - let arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, ContextualFlags.IMPLICIT); - let arg1 = compiler.compileExpression(operands[1], Type.u32, ContextualFlags.IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.visit; - compiler.currentType = Type.void; - return module.createCall(compiler.program.visitInstance.internalName, [ arg0, arg1 ], NativeType.None); - } - case compiler.program.retainInstance.internalName: { - let usizeType = compiler.options.usizeType; - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 1, reportNode, compiler) // ref - ) { - compiler.currentType = usizeType; - return module.createUnreachable(); - } - let arg0 = compiler.compileExpression(operands[0], usizeType, ContextualFlags.IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.retain; - compiler.currentType = usizeType; - return module.createCall(compiler.program.retainInstance.internalName, [ arg0 ], compiler.options.nativeSizeType); - } - case compiler.program.retainReleaseInstance.internalName: { - let usizeType = compiler.options.usizeType; - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 2, reportNode, compiler) // newRef, oldRef - ) { - compiler.currentType = usizeType; - return module.createUnreachable(); - } - let arg0 = compiler.compileExpression(operands[0], usizeType, ContextualFlags.IMPLICIT); - let arg1 = compiler.compileExpression(operands[1], usizeType, ContextualFlags.IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.retainRelease; - compiler.currentType = usizeType; - return module.createCall(compiler.program.retainReleaseInstance.internalName, [ arg0, arg1 ], compiler.options.nativeSizeType); - } - case compiler.program.releaseInstance.internalName: { - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 1, reportNode, compiler) // ref - ) { - compiler.currentType = Type.void; - return module.createUnreachable(); - } - let arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, ContextualFlags.IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.release; - compiler.currentType = Type.void; - return module.createCall(compiler.program.releaseInstance.internalName, [ arg0 ], NativeType.None); - } - case compiler.program.allocInstance.internalName: { - let usizeType = compiler.options.usizeType; - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 2, reportNode, compiler) // size, id - ) { - compiler.currentType = usizeType; - return module.createUnreachable(); - } - let arg0 = compiler.compileExpression(operands[0], usizeType, ContextualFlags.IMPLICIT); - let arg1 = compiler.compileExpression(operands[1], Type.u32, ContextualFlags.IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.alloc; - compiler.currentType = usizeType; - return module.createCall(compiler.program.allocInstance.internalName, [ arg0, arg1 ], compiler.options.nativeSizeType); - } - case compiler.program.reallocInstance.internalName: { - let usizeType = compiler.options.usizeType; - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 2, reportNode, compiler) // ref, size - ) { - compiler.currentType = usizeType; - return module.createUnreachable(); - } - let arg0 = compiler.compileExpression(operands[0], usizeType, ContextualFlags.IMPLICIT); - let arg1 = compiler.compileExpression(operands[1], usizeType, ContextualFlags.IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.realloc; - compiler.currentType = usizeType; - return module.createCall(compiler.program.reallocInstance.internalName, [ arg0, arg1 ], compiler.options.nativeSizeType); - } - case compiler.program.freeInstance.internalName: { - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 1, reportNode, compiler) // ref - ) { - compiler.currentType = Type.void; - return module.createUnreachable(); - } - let arg0 = compiler.compileExpression(operands[0], compiler.options.usizeType, ContextualFlags.IMPLICIT); - compiler.runtimeFeatures |= RuntimeFeatures.free; - compiler.currentType = Type.void; - return module.createCall(compiler.program.freeInstance.internalName, [ arg0 ], NativeType.None); - } - case compiler.program.collectInstance.internalName: { - if ( - checkTypeAbsent(typeArguments, reportNode, prototype) | - checkArgsRequired(operands, 0, reportNode, compiler) - ) { - compiler.currentType = Type.void; - return module.createUnreachable(); - } - compiler.runtimeFeatures |= RuntimeFeatures.collect; - compiler.currentType = Type.void; - return module.createCall(compiler.program.collectInstance.internalName, null, NativeType.None); - } } // try to defer inline asm to a concrete built-in diff --git a/src/common.ts b/src/common.ts index 59fff48e..e36680ec 100644 --- a/src/common.ts +++ b/src/common.ts @@ -188,6 +188,7 @@ export namespace CommonSymbols { export const retain = "__retain"; export const release = "__release"; export const retainRelease = "__retainRelease"; + export const skippedRelease = "__skippedRelease"; export const collect = "__collect"; export const typeinfo = "__typeinfo"; export const instanceof_ = "__instanceof"; diff --git a/src/compiler.ts b/src/compiler.ts index 1e0d0062..f2575075 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -257,26 +257,10 @@ export const enum RuntimeFeatures { HEAP = 1 << 0, /** Requires RTTI_BASE and RTTI setup. */ RTTI = 1 << 1, - /** Requires the alloc function. */ - alloc = 1 << 2, - /** Requires the realloc function. */ - realloc = 1 << 3, - /** Requires the free function. */ - free = 1 << 4, - /** Requires the retain function. */ - retain = 1 << 5, - /** Requires the retainRelease functino. */ - retainRelease = 1 << 6, - /** Requires the release function. */ - release = 1 << 7, - /** Requires the collect function. */ - collect = 1 << 8, - /** Requires the visit function. */ - visit = 1 << 9, /** Requires the built-in globals visitor. */ - visitGlobals = 1 << 10, + visitGlobals = 1 << 2, /** Requires the built-in members visitor. */ - visitMembers = 1 << 11 + visitMembers = 1 << 3 } /** Compiler interface. */ @@ -381,8 +365,8 @@ export class Compiler extends DiagnosticEmitter { } // compile the start function if not empty or called by main - var explicitStartFunction = program.explicitStartFunction; - if (startFunctionBody.length || explicitStartFunction) { + var hasExplicitStart = program.explicitStartFunction !== null; + if (startFunctionBody.length || hasExplicitStart) { let signature = startFunctionInstance.signature; let funcRef = module.addFunction( startFunctionInstance.internalName, @@ -395,22 +379,12 @@ export class Compiler extends DiagnosticEmitter { module.createBlock(null, startFunctionBody) ); startFunctionInstance.finalize(module, funcRef); - if (!explicitStartFunction) module.setStart(funcRef); + if (!hasExplicitStart) module.setStart(funcRef); } - // compile runtime implementation (after actual code). note that these may modify features and order is important. - if (this.runtimeFeatures & RuntimeFeatures.visit) this.compileFunction(program.visitInstance); - if (this.runtimeFeatures & RuntimeFeatures.retain) this.compileFunction(program.retainInstance); - if (this.runtimeFeatures & RuntimeFeatures.retainRelease) this.compileFunction(program.retainReleaseInstance); - if (this.runtimeFeatures & RuntimeFeatures.release) this.compileFunction(program.releaseInstance); - if (this.runtimeFeatures & RuntimeFeatures.collect) this.compileFunction(program.collectInstance); + // compile runtime features if (this.runtimeFeatures & RuntimeFeatures.visitGlobals) compileVisitGlobals(this); - if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this); // called by release - if (this.runtimeFeatures & RuntimeFeatures.realloc) this.compileFunction(program.reallocInstance); - if (this.runtimeFeatures & RuntimeFeatures.alloc) this.compileFunction(program.allocInstance); - if (this.runtimeFeatures & RuntimeFeatures.free) this.compileFunction(program.freeInstance); - - // compile runtime type information + if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this); module.removeGlobal(BuiltinSymbols.RTTI_BASE); if (this.runtimeFeatures & RuntimeFeatures.RTTI) compileRTTI(this); @@ -642,11 +616,11 @@ export class Compiler extends DiagnosticEmitter { var valueExpr = module.createGetLocal(1, nativeType); if (type.isManaged) { valueExpr = this.makeRetainRelease( - valueExpr, // newRef module.createLoad(type.byteSize, false, // oldRef module.createGetLocal(0, nativeSizeType), nativeType, field.memoryOffset - ) + ), + valueExpr // newRef ); } module.addFunction( @@ -1159,12 +1133,14 @@ export class Compiler extends DiagnosticEmitter { this.performAutoreleases(flow, stmts); this.finishAutoreleases(flow, stmts); let canOverflow = flow.canOverflow(expr, returnType); + let nonNull = flow.isNonnull(returnType, expr); if (stmts.length > indexBefore) { - let temp = flow.getAndFreeTempLocal(returnType, !canOverflow); + let temp = flow.getAndFreeTempLocal(returnType, !canOverflow, nonNull); stmts[indexBefore - 1] = module.createSetLocal(temp.index, expr); stmts.push(module.createGetLocal(temp.index, returnType.toNativeType())); } if (!canOverflow) flow.set(FlowFlags.RETURNS_WRAPPED); + if (nonNull) flow.set(FlowFlags.RETURNS_NONNULL); flow.set(FlowFlags.RETURNS); // now is terminating } } @@ -1251,6 +1227,7 @@ export class Compiler extends DiagnosticEmitter { if (instance.is(CommonFlags.COMPILED)) return true; assert(!(instance.is(CommonFlags.AMBIENT) && instance.hasDecorator(DecoratorFlags.BUILTIN))); + var previousType = this.currentType; // remember to retain it if compiling a function lazily instance.set(CommonFlags.COMPILED); var module = this.module; @@ -1346,6 +1323,7 @@ export class Compiler extends DiagnosticEmitter { } instance.finalize(module, funcRef); + this.currentType = previousType; return true; } @@ -2222,8 +2200,8 @@ export class Compiler extends DiagnosticEmitter { // Make sure that the return value is retained for the caller if (returnType.isManaged && !this.skippedAutoreleases.has(expr)) expr = this.makeRetain(expr); - if (stmts.length) { - let temp = flow.getAndFreeTempLocal(returnType, false); + if (returnType != Type.void && stmts.length) { + let temp = flow.getAndFreeTempLocal(returnType, false, flow.isNonnull(returnType, expr)); stmts.unshift( module.createSetLocal(temp.index, expr) ); @@ -2268,7 +2246,7 @@ export class Compiler extends DiagnosticEmitter { var context = outerFlow.pushBreakLabel(); // introduce a local for evaluating the condition (exactly once) - var tempLocal = outerFlow.getTempLocal(Type.u32, false); + var tempLocal = outerFlow.getTempLocal(Type.u32); var tempLocalIndex = tempLocal.index; // Prepend initializer to inner block. Does not initiate a new branch, yet. @@ -2897,6 +2875,8 @@ export class Compiler extends DiagnosticEmitter { // any to void if (toType.kind == TypeKind.VOID) return module.createDrop(expr); + if (this.currentFlow.isNonnull(fromType, expr)) fromType = fromType.nonNullableType; + if (!fromType.isAssignableTo(toType)) { if (!explicit) { if (fromType.nonNullableType == toType) { @@ -3092,7 +3072,7 @@ export class Compiler extends DiagnosticEmitter { } else if (!this.options.noAssert) { let module = this.module; let flow = this.currentFlow; - let tempIndex = flow.getAndFreeTempLocal(type, !flow.canOverflow(expr, type)).index; + let tempIndex = flow.getAndFreeTempLocal(type, !flow.canOverflow(expr, type), false).index; expr = module.createIf( module.createTeeLocal(tempIndex, expr), module.createGetLocal(tempIndex, type.toNativeType()), @@ -4860,19 +4840,30 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpressionRetainType(left, contextualType, contextualFlags); leftType = this.currentType; + let rightFlow = flow.fork(); + this.currentFlow = rightFlow; + rightFlow.inheritNonnullIfTrue(leftExpr); + rightExpr = this.compileExpression(right, leftType, ContextualFlags.IMPLICIT | (contextualFlags & ~ContextualFlags.WILL_DROP)); + rightType = leftType; + + // simplify if only interested in true or false + if (contextualType == Type.bool || contextualType == Type.void) { + rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType); + rightFlow.freeScopedLocals(); + this.currentFlow = flow; + this.currentType = Type.bool; + expr = module.createIf( + this.makeIsTrueish(leftExpr, leftType), + this.makeIsTrueish(rightExpr, rightType), + module.createI32(0) + ); + // references must properly retain and release, with the same outcome independent of the branch taken - if (leftType.isManaged) { - + } else if (leftType.isManaged) { let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr); - let tempLocal = flow.getTempLocal(leftType, false); - leftExpr = module.createTeeLocal(tempLocal.index, leftExpr); - - let rightFlow = flow.fork(); - this.currentFlow = rightFlow; - rightFlow.inheritNonnullIfTrue(leftExpr); - rightExpr = this.compileExpression(right, leftType, ContextualFlags.IMPLICIT | contextualFlags); - rightType = leftType; let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr); + let temp = flow.getTempLocal(leftType); + leftExpr = module.createTeeLocal(temp.index, leftExpr); // instead of retaining left and releasing it again in right when right // is taken, we can also just retain left if right is not taken @@ -4892,7 +4883,7 @@ export class Compiler extends DiagnosticEmitter { if (leftAutoreleaseSkipped) { // left turned out to be true'ish and is dropped rightStmts.unshift( this.makeRelease( - module.createGetLocal(tempLocal.index, leftType.toNativeType()) + module.createGetLocal(temp.index, leftType.toNativeType()) ) ); } @@ -4905,36 +4896,21 @@ export class Compiler extends DiagnosticEmitter { rightExpr, retainLeftInElse ? this.makeRetain( - module.createGetLocal(tempLocal.index, leftType.toNativeType()) + module.createGetLocal(temp.index, leftType.toNativeType()) ) - : module.createGetLocal(tempLocal.index, leftType.toNativeType()) + : module.createGetLocal(temp.index, leftType.toNativeType()) ); if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr); - if (tempLocal) flow.freeTempLocal(tempLocal); + if (temp) flow.freeTempLocal(temp); // basic values can use more aggressive optimizations } else { - - let rightFlow = flow.fork(); - this.currentFlow = rightFlow; - rightFlow.inheritNonnullIfTrue(leftExpr); - rightExpr = this.compileExpression(right, leftType, ContextualFlags.IMPLICIT | contextualFlags); - rightType = leftType; rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType); rightFlow.freeScopedLocals(); this.currentFlow = flow; - // simplify if only interested in true or false - if (contextualType == Type.bool || contextualType == Type.void) { - this.currentType = Type.bool; - expr = module.createIf( - this.makeIsTrueish(leftExpr, leftType), - this.makeIsTrueish(rightExpr, rightType), - module.createI32(0) - ); - // simplify if cloning left without side effects is possible - } else if (expr = module.cloneExpression(leftExpr, true, 0)) { + if (expr = module.cloneExpression(leftExpr, true, 0)) { expr = module.createIf( this.makeIsTrueish(leftExpr, this.currentType), rightExpr, @@ -4951,6 +4927,7 @@ export class Compiler extends DiagnosticEmitter { ); } } + this.currentType = leftType; break; } case Token.BAR_BAR: { // left || right -> ((t = left) ? t : right) @@ -4958,19 +4935,30 @@ export class Compiler extends DiagnosticEmitter { leftExpr = this.compileExpressionRetainType(left, contextualType, contextualFlags); leftType = this.currentType; + let rightFlow = flow.fork(); + this.currentFlow = rightFlow; + rightFlow.inheritNonnullIfFalse(leftExpr); + rightExpr = this.compileExpression(right, leftType, ContextualFlags.IMPLICIT | contextualFlags); + rightType = leftType; + + // simplify if only interested in true or false + if (contextualType == Type.bool || contextualType == Type.void) { + rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, leftType); + rightFlow.freeScopedLocals(); + this.currentFlow = flow; + this.currentType = Type.bool; + expr = module.createIf( + this.makeIsTrueish(leftExpr, leftType), + module.createI32(1), + this.makeIsTrueish(rightExpr, rightType) + ); + // references must properly retain and release, with the same outcome independent of the branch taken - if (leftType.isManaged) { - + } else if (leftType.isManaged) { let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr); - let tempLocal = flow.getTempLocal(leftType, false); - leftExpr = module.createTeeLocal(tempLocal.index, leftExpr); - - let rightFlow = flow.fork(); - this.currentFlow = rightFlow; - rightFlow.inheritNonnullIfFalse(leftExpr); - rightExpr = this.compileExpression(right, leftType, ContextualFlags.IMPLICIT | contextualFlags); - rightType = leftType; let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr); + let temp = flow.getTempLocal(leftType); + leftExpr = module.createTeeLocal(temp.index, leftExpr); // instead of retaining left and releasing it again in right when right // is taken, we can also just retain left if right is not taken @@ -4992,7 +4980,7 @@ export class Compiler extends DiagnosticEmitter { // once implicit conversion with strings is performed and left is "", so: rightStmts.unshift( this.makeRelease( - module.createGetLocal(tempLocal.index, leftType.toNativeType()) + module.createGetLocal(temp.index, leftType.toNativeType()) ) ); } @@ -5004,37 +4992,22 @@ export class Compiler extends DiagnosticEmitter { this.makeIsTrueish(leftExpr, leftType), retainLeftInThen ? this.makeRetain( - module.createGetLocal(tempLocal.index, leftType.toNativeType()) + module.createGetLocal(temp.index, leftType.toNativeType()) ) - : module.createGetLocal(tempLocal.index, leftType.toNativeType()), + : module.createGetLocal(temp.index, leftType.toNativeType()), rightExpr ); if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr); - if (tempLocal) flow.freeTempLocal(tempLocal); + if (temp) flow.freeTempLocal(temp); // basic values can use more aggressive optimizations } else { - - let rightFlow = flow.fork(); - this.currentFlow = rightFlow; - rightFlow.inheritNonnullIfFalse(leftExpr); - rightExpr = this.compileExpression(right, leftType, ContextualFlags.IMPLICIT | contextualFlags); - rightType = leftType; rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType); rightFlow.freeScopedLocals(); this.currentFlow = flow; - // simplify if only interested in true or false - if (contextualType == Type.bool || contextualType == Type.void) { - this.currentType = Type.bool; - expr = module.createIf( - this.makeIsTrueish(leftExpr, leftType), - module.createI32(1), - this.makeIsTrueish(rightExpr, rightType) - ); - // simplify if cloning left without side effects is possible - } else if (expr = module.cloneExpression(leftExpr, true, 0)) { + if (expr = module.cloneExpression(leftExpr, true, 0)) { expr = module.createIf( this.makeIsTrueish(leftExpr, this.currentType), expr, @@ -5043,7 +5016,10 @@ export class Compiler extends DiagnosticEmitter { // if not possible, tee left to a temp. local } else { - let tempLocal = flow.getAndFreeTempLocal(this.currentType, !flow.canOverflow(leftExpr, this.currentType)); + let tempLocal = flow.getAndFreeTempLocal(this.currentType, + !flow.canOverflow(leftExpr, this.currentType), + flow.isNonnull(this.currentType, leftExpr) + ); expr = module.createIf( this.makeIsTrueish(module.createTeeLocal(tempLocal.index, leftExpr), this.currentType), module.createGetLocal(tempLocal.index, this.currentType.toNativeType()), @@ -5051,6 +5027,7 @@ export class Compiler extends DiagnosticEmitter { ); } } + this.currentType = leftType; break; } default: { @@ -5252,7 +5229,7 @@ export class Compiler extends DiagnosticEmitter { this.currentType = tee ? (target).type : Type.void; return module.createUnreachable(); } - return this.makeLocalAssignment(target, valueExpr, tee, !flow.isNonnull(this.currentType, valueExpr)); + return this.makeLocalAssignment(target, valueExpr, tee); } case ElementKind.GLOBAL: { if (!this.compileGlobal(target)) return module.createUnreachable(); @@ -5383,7 +5360,7 @@ export class Compiler extends DiagnosticEmitter { ); let elementExpr = this.compileExpression(indexExpression, Type.i32, ContextualFlags.IMPLICIT); if (tee) { - let tempLocalTarget = flow.getTempLocal(targetType, false); + let tempLocalTarget = flow.getTempLocal(targetType); let tempLocalElement = flow.getAndFreeTempLocal(this.currentType, false); let returnType = indexedGet.signature.returnType; flow.freeTempLocal(tempLocalTarget); @@ -5423,9 +5400,7 @@ export class Compiler extends DiagnosticEmitter { /** The value to assign. */ valueExpr: ExpressionRef, /** Whether to tee the value. */ - tee: bool, - /** Whether the value is possibly null. */ - possiblyNull: bool + tee: bool ): ExpressionRef { var type = local.type; assert(type != Type.void); @@ -5433,8 +5408,8 @@ export class Compiler extends DiagnosticEmitter { var localIndex = local.index; if (type.is(TypeFlags.NULLABLE)) { - if (possiblyNull) flow.unsetLocalFlag(localIndex, LocalFlags.NONNULL); - else flow.setLocalFlag(localIndex, LocalFlags.NONNULL); + if (flow.isNonnull(type, valueExpr)) flow.setLocalFlag(localIndex, LocalFlags.NONNULL); + else flow.unsetLocalFlag(localIndex, LocalFlags.NONNULL); } if (type.isManaged) { @@ -5443,53 +5418,40 @@ export class Compiler extends DiagnosticEmitter { if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) { if (this.skippedAutoreleases.has(valueExpr)) { - if (tee) { // TEE(local = { __release(local), value }) + valueExpr = this.makeSkippedRelease( + module.createGetLocal(localIndex, nativeType), // oldRef + valueExpr // newRef + ); + if (tee) { // TEE(local = __skippedRelease(local, value)) this.currentType = type; - return module.createTeeLocal(localIndex, - module.createBlock(null, [ - this.makeRelease(module.createGetLocal(localIndex, nativeType)), - valueExpr - ], nativeType) - ); - } else { // local = { __release(local), value } + return module.createTeeLocal(localIndex, valueExpr); + } else { // local = __skippedRelease(local, value) this.currentType = Type.void; - return module.createSetLocal(localIndex, - module.createBlock(null, [ - this.makeRelease(module.createGetLocal(localIndex, nativeType)), - valueExpr - ], nativeType) - ); + return module.createSetLocal(localIndex, valueExpr); } } else { - if (tee) { // TEE(local = {__retainRelease(value, local)) + valueExpr = this.makeRetainRelease( + module.createGetLocal(localIndex, nativeType), // oldRef + valueExpr // newRef + ); + if (tee) { // TEE(local = __retainRelease(local, value)) this.currentType = type; - return module.createTeeLocal(localIndex, - this.makeRetainRelease(valueExpr, module.createGetLocal(localIndex, nativeType)) - ); - } else { // local = __retainRelease(value, local) + return module.createTeeLocal(localIndex, valueExpr); + } else { // local = __retainRelease(local, value) this.currentType = Type.void; - return module.createSetLocal(localIndex, - this.makeRetainRelease(valueExpr, module.createGetLocal(localIndex, nativeType)) - ); + return module.createSetLocal(localIndex, valueExpr); } } } else { flow.unsetLocalFlag(localIndex, LocalFlags.CONDITIONALLY_RETAINED); flow.setLocalFlag(localIndex, LocalFlags.RETAINED); + if (!this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeRetain(valueExpr); if (tee) { // TEE(local = __retain(value, local)) this.currentType = type; - return module.createTeeLocal(localIndex, - this.skippedAutoreleases.has(valueExpr) - ? valueExpr - : this.makeRetain(valueExpr) - ); + return module.createTeeLocal(localIndex, valueExpr); } else { // local = __retain(value, local) this.currentType = Type.void; - return module.createSetLocal(localIndex, - this.skippedAutoreleases.has(valueExpr) - ? valueExpr - : this.makeRetain(valueExpr) - ); + return module.createSetLocal(localIndex, valueExpr); } } } else { @@ -5523,60 +5485,55 @@ export class Compiler extends DiagnosticEmitter { if (type.isManaged) { if (this.skippedAutoreleases.has(valueExpr)) { - if (tee) { // (global = (__release(global), t1 = value)), t1 - let tempValue = this.currentFlow.getAndFreeTempLocal(type, true); // globals are wrapped + if (tee) { // (global = __skippedRelease(global, value)), global this.currentType = type; return module.createBlock(null, [ module.createSetGlobal(global.internalName, - module.createBlock(null, [ - this.makeRelease(module.createGetGlobal(global.internalName, nativeType)), - module.createTeeLocal(tempValue.index, valueExpr) - ], nativeType) + this.makeSkippedRelease( + module.createGetGlobal(global.internalName, nativeType), // oldRef + valueExpr // newRef + ) ), - module.createGetLocal(tempValue.index, nativeType) + module.createGetGlobal(global.internalName, nativeType) ], nativeType); - } else { // global = (__release(global), value) + } else { // global = __skippedRelease(global, value) this.currentType = Type.void; return module.createSetGlobal(global.internalName, - module.createBlock(null, [ - this.makeRelease(module.createGetGlobal(global.internalName, nativeType)), - valueExpr - ], nativeType) + this.makeSkippedRelease( + module.createGetGlobal(global.internalName, nativeType), // oldRef + valueExpr // newRef + ) ); } } else { - if (tee) { // (global = __retainRelease(t1 = value, global)), t1 - let tempValue = this.currentFlow.getAndFreeTempLocal(type, true); // globals are wrapped + if (tee) { // (global = __retainRelease(global, value)), global this.currentType = type; return module.createBlock(null, [ module.createSetGlobal(global.internalName, this.makeRetainRelease( - module.createTeeLocal(tempValue.index, valueExpr), - module.createGetGlobal(global.internalName, nativeType) + module.createGetGlobal(global.internalName, nativeType), // oldRef + valueExpr // newRef ) ), - module.createGetLocal(tempValue.index, nativeType) + module.createGetGlobal(global.internalName, nativeType) ], nativeType); - } else { // global = __retainRelease(value, global) + } else { // global = __retainRelease(global, value) this.currentType = Type.void; return module.createSetGlobal(global.internalName, this.makeRetainRelease( - valueExpr, - module.createGetGlobal(global.internalName, nativeType) + module.createGetGlobal(global.internalName, nativeType), // oldRef + valueExpr // newRef ) ); } } } else { valueExpr = this.ensureSmallIntegerWrap(valueExpr, type); // globals must be wrapped - if (tee) { // (global = (t1 = value)), t1 - let tempValue = this.currentFlow.getAndFreeTempLocal(type, true); + if (tee) { // (global = value), global this.currentType = type; return module.createBlock(null, [ - module.createSetGlobal(global.internalName, - module.createTeeLocal(tempValue.index, valueExpr) - ), - module.createGetLocal(tempValue.index, nativeType) + module.createSetGlobal(global.internalName, valueExpr), + module.createGetGlobal(global.internalName, nativeType) ], nativeType); } else { // global = value this.currentType = Type.void; @@ -5607,47 +5564,43 @@ export class Compiler extends DiagnosticEmitter { var nativeThisType = thisType.toNativeType(); if (fieldType.isManaged && thisType.isManaged) { - let tempThis = flow.getTempLocal(thisType, false); + let tempThis = flow.getTempLocal(thisType); if (this.skippedAutoreleases.has(valueExpr)) { - if (tee) { // ((t1 = this).field = (__release(t1.field), t2 = value)), t2 + if (tee) { // ((t1 = this).field = __skippedRelease(t1.field, t2 = value)), t2 let tempValue = flow.getAndFreeTempLocal(fieldType, !flow.canOverflow(valueExpr, fieldType)); flow.freeTempLocal(tempThis); this.currentType = fieldType; return module.createBlock(null, [ module.createStore(fieldType.byteSize, module.createTeeLocal(tempThis.index, thisExpr), - module.createBlock(null, [ - this.makeRelease( - module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef - module.createGetLocal(tempThis.index, nativeThisType), - nativeFieldType, field.memoryOffset - ) + this.makeSkippedRelease( + module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef + module.createGetLocal(tempThis.index, nativeThisType), + nativeFieldType, field.memoryOffset ), - module.createTeeLocal(tempValue.index, valueExpr) - ], nativeFieldType), + module.createTeeLocal(tempValue.index, valueExpr), // newRef + ), nativeFieldType, field.memoryOffset ), module.createGetLocal(tempValue.index, nativeFieldType) ], nativeFieldType); - } else { // (t1 = this).field = (__release(t1.field), value) + } else { // (t1 = this).field = __skippedRelease(t1.field, value) flow.freeTempLocal(tempThis); this.currentType = Type.void; return module.createStore(fieldType.byteSize, module.createTeeLocal(tempThis.index, thisExpr), - module.createBlock(null, [ - this.makeRelease( - module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef - module.createGetLocal(tempThis.index, nativeThisType), - nativeFieldType, field.memoryOffset - ) + this.makeSkippedRelease( + module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef + module.createGetLocal(tempThis.index, nativeThisType), + nativeFieldType, field.memoryOffset ), - valueExpr - ], nativeFieldType), + valueExpr, // newRef + ), nativeFieldType, field.memoryOffset ); } } else { - if (tee) { // ((t1 = this).field = __retainRelease(t2 = value, t1.field)), t2 + if (tee) { // ((t1 = this).field = __retainRelease(t1.field, t2 = value)), t2 let tempValue = flow.getAndFreeTempLocal(fieldType, !flow.canOverflow(valueExpr, fieldType)); flow.freeTempLocal(tempThis); this.currentType = fieldType; @@ -5655,27 +5608,27 @@ export class Compiler extends DiagnosticEmitter { module.createStore(fieldType.byteSize, module.createTeeLocal(tempThis.index, thisExpr), this.makeRetainRelease( - module.createTeeLocal(tempValue.index, valueExpr), // newRef module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef module.createGetLocal(tempThis.index, nativeThisType), nativeFieldType, field.memoryOffset - ) + ), + module.createTeeLocal(tempValue.index, valueExpr) // newRef ), nativeFieldType, field.memoryOffset ), module.createGetLocal(tempValue.index, nativeFieldType) ], nativeFieldType); - } else { // (t1 = this).field = __retainRelease(value, t1.field) + } else { // (t1 = this).field = __retainRelease(t1.field, value) flow.freeTempLocal(tempThis); this.currentType = Type.void; return module.createStore(fieldType.byteSize, module.createTeeLocal(tempThis.index, thisExpr), this.makeRetainRelease( - valueExpr, // newRef module.createLoad(fieldType.byteSize, fieldType.is(TypeFlags.SIGNED), // oldRef module.createGetLocal(tempThis.index, nativeThisType), nativeFieldType, field.memoryOffset - ) + ), + valueExpr // newRef ), nativeFieldType, field.memoryOffset ); @@ -6351,7 +6304,10 @@ export class Compiler extends DiagnosticEmitter { this.compileFunctionBody(instance, body); // Free any new scoped locals and reset to the original flow - if (!flow.isAny(FlowFlags.ANY_TERMINATING)) this.performAutoreleases(flow, body); + if (!flow.isAny(FlowFlags.ANY_TERMINATING)) { + this.performAutoreleases(flow, body); + this.finishAutoreleases(flow, body); + } flow.freeScopedLocals(); var returnType = flow.returnType; this.currentFlow = previousFlow; @@ -6542,20 +6498,32 @@ export class Compiler extends DiagnosticEmitter { /** Makes retain call, retaining the expression's value. */ makeRetain(expr: ExpressionRef): ExpressionRef { - this.runtimeFeatures |= RuntimeFeatures.retain; - return this.module.createCall(this.program.retainInstance.internalName, [ expr ], this.options.nativeSizeType); + var retainInstance = this.program.retainInstance; + this.compileFunction(retainInstance); + return this.module.createCall(retainInstance.internalName, [ expr ], this.options.nativeSizeType); } - /** Makes a retainRelease call, retaining the new expression's value and releasing the old expression's value. */ - makeRetainRelease(exprNew: ExpressionRef, exprOld: ExpressionRef): ExpressionRef { - this.runtimeFeatures |= RuntimeFeatures.retainRelease; - return this.module.createCall(this.program.retainReleaseInstance.internalName, [ exprNew, exprOld ], this.options.nativeSizeType); + /** Makes a retainRelease call, retaining the new expression's value and releasing the old expression's value, in this order. */ + makeRetainRelease(oldExpr: ExpressionRef, newExpr: ExpressionRef): ExpressionRef { + // FIXME: this is a workaround, see https://github.com/WebAssembly/binaryen/issues/2135 + var retainReleaseInstance = this.program.retainReleaseInstance; + this.compileFunction(retainReleaseInstance); + return this.module.createCall(retainReleaseInstance.internalName, [ oldExpr, newExpr ], this.options.nativeSizeType); + } + + /** Makes a skippedRelease call, ignoring the new expression's value and releasing the old expression's value, in this order. */ + makeSkippedRelease(oldExpr: ExpressionRef, newExpr: ExpressionRef): ExpressionRef { + // FIXME: this is a workaround, see https://github.com/WebAssembly/binaryen/issues/2135 + var skippedReleaseInstance = this.program.skippedReleaseInstance; + this.compileFunction(skippedReleaseInstance); + return this.module.createCall(skippedReleaseInstance.internalName, [ oldExpr, newExpr ], this.options.nativeSizeType); } /** Makes a release call, releasing the expression's value. Changes the current type to void.*/ makeRelease(expr: ExpressionRef): ExpressionRef { - this.runtimeFeatures |= RuntimeFeatures.release; - return this.module.createCall(this.program.releaseInstance.internalName, [ expr ], NativeType.None); + var releaseInstance = this.program.releaseInstance; + this.compileFunction(releaseInstance); + return this.module.createCall(releaseInstance.internalName, [ expr ], NativeType.None); } /** Makes an automatic release call at the end of the current flow. */ @@ -6647,7 +6615,7 @@ export class Compiler extends DiagnosticEmitter { this.performAutoreleases(flow, stmts, clearFlags); if (stmts.length > lengthBefore) { let nativeType = valueType.toNativeType(); - let temp = flow.getAndFreeTempLocal(valueType, !flow.canOverflow(valueExpr, valueType)); + let temp = flow.getAndFreeTempLocal(valueType, !flow.canOverflow(valueExpr, valueType), flow.isNonnull(valueType, valueExpr)); let module = this.module; stmts[lengthBefore - 1] = module.createSetLocal(temp.index, valueExpr); // nop -> set stmts.push( @@ -6664,15 +6632,23 @@ export class Compiler extends DiagnosticEmitter { /** Finishes any queued top-level autoreleases in the actual function of the specified flow. */ finishAutoreleases(flow: Flow, stmts: ExpressionRef[]): void { var module = this.module; - for (let local of flow.actualFunction.localsByIndex) { - let localIndex = local.index; - if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) { - flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED); - stmts.push( - this.makeRelease( - module.createGetLocal(localIndex, local.type.toNativeType()) - ) - ); + if (flow.is(FlowFlags.INLINE_CONTEXT)) { + // traverse to the top-most flow containing the inlined function's + // locals as scoped locals and release these instead. + let parent: Flow | null; + while (parent = flow.parent) flow = parent; + this.performAutoreleases(flow, stmts, false); + } else { + for (let local of flow.parentFunction.localsByIndex) { + let localIndex = local.index; + if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) { + flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED); + stmts.push( + this.makeRelease( + module.createGetLocal(localIndex, local.type.toNativeType()) + ) + ); + } } } } @@ -7218,30 +7194,30 @@ export class Compiler extends DiagnosticEmitter { switch (target.kind) { case ElementKind.LOCAL: { - let localType = (target).type; - assert(localType != Type.void); + let type = (target).type; + assert(type != Type.void); if ((target).is(CommonFlags.INLINED)) { return this.compileInlineConstant(target, contextualType, contextualFlags); } let localIndex = (target).index; assert(localIndex >= 0); - if (localType.is(TypeFlags.NULLABLE) && flow.isLocalFlag(localIndex, LocalFlags.NONNULL, false)) { - localType = localType.nonNullableType; + if (type.is(TypeFlags.NULLABLE) && flow.isLocalFlag(localIndex, LocalFlags.NONNULL, false)) { + type = type.nonNullableType; } - this.currentType = localType; - return this.module.createGetLocal(localIndex, localType.toNativeType()); + this.currentType = type; + return this.module.createGetLocal(localIndex, type.toNativeType()); } case ElementKind.GLOBAL: { if (!this.compileGlobal(target)) { // reports; not yet compiled if a static field return this.module.createUnreachable(); } - let globalType = (target).type; - assert(globalType != Type.void); + let type = (target).type; + assert(type != Type.void); if ((target).is(CommonFlags.INLINED)) { return this.compileInlineConstant(target, contextualType, contextualFlags); } - this.currentType = globalType; - return this.module.createGetGlobal((target).internalName, globalType.toNativeType()); + this.currentType = type; + return this.module.createGetGlobal((target).internalName, type.toNativeType()); } case ElementKind.ENUMVALUE: { // here: if referenced from within the same enum if (!target.is(CommonFlags.COMPILED)) { @@ -7503,7 +7479,7 @@ export class Compiler extends DiagnosticEmitter { var flow = this.currentFlow; // block those here so compiling expressions doesn't conflict - var tempThis = flow.getTempLocal(arrayType, false); + var tempThis = flow.getTempLocal(arrayType); var tempDataStart = flow.getTempLocal(arrayBufferInstance.type); // compile value expressions and find out whether all are constant @@ -8117,7 +8093,7 @@ export class Compiler extends DiagnosticEmitter { // if the value isn't dropped, a temp. local is required to remember the original value var tempLocal: Local | null = null; if (contextualType != Type.void) { - tempLocal = flow.getTempLocal(this.currentType, false); + tempLocal = flow.getTempLocal(this.currentType); getValue = module.createTeeLocal( tempLocal.index, getValue @@ -8798,7 +8774,7 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.U64: { return module.createUnary(UnaryOp.EqzI64, expr); } - case TypeKind.USIZE: // TODO: strings? + case TypeKind.USIZE: if (this.skippedAutoreleases.has(expr)) expr = this.makeAutorelease(expr); case TypeKind.ISIZE: { return module.createUnary(type.size == 64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, expr); } @@ -8835,7 +8811,7 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.U64: { return module.createBinary(BinaryOp.NeI64, expr, module.createI64(0)); } - case TypeKind.USIZE: // TODO: strings? + case TypeKind.USIZE: if (this.skippedAutoreleases.has(expr)) expr = this.makeAutorelease(expr); case TypeKind.ISIZE: { return type.size == 64 ? module.createBinary(BinaryOp.NeI64, expr, module.createI64(0)) @@ -8864,8 +8840,9 @@ export class Compiler extends DiagnosticEmitter { var module = this.module; var options = this.options; this.currentType = classInstance.type; - this.runtimeFeatures |= RuntimeFeatures.alloc; - return module.createCall(program.allocInstance.internalName, [ + var allocInstance = program.allocInstance; + this.compileFunction(allocInstance); + return module.createCall(allocInstance.internalName, [ options.isWasm64 ? module.createI64(classInstance.currentMemoryOffset) : module.createI32(classInstance.currentMemoryOffset), @@ -8942,7 +8919,7 @@ export class Compiler extends DiagnosticEmitter { ): ExpressionRef { var module = this.module; var flow = this.currentFlow; - var idTemp = flow.getTempLocal(Type.i32, false); + var idTemp = flow.getTempLocal(Type.i32); var idExpr = module.createLoad(4, false, module.createBinary(BinaryOp.SubI32, expr, diff --git a/src/flow.ts b/src/flow.ts index a5bc440b..34f09444 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -51,7 +51,9 @@ import { getSetLocalIndex, getIfCondition, getConstValueI64High, - getUnaryValue + getUnaryValue, + getCallOperand, + getCallOperandCount } from "./module"; import { @@ -77,36 +79,38 @@ export const enum FlowFlags { RETURNS = 1 << 0, /** This flow returns a wrapped value. */ RETURNS_WRAPPED = 1 << 1, + /** This flow returns a non-null value. */ + RETURNS_NONNULL = 1 << 2, /** This flow throws. */ - THROWS = 1 << 2, + THROWS = 1 << 3, /** This flow breaks. */ - BREAKS = 1 << 3, + BREAKS = 1 << 4, /** This flow continues. */ - CONTINUES = 1 << 4, + CONTINUES = 1 << 5, /** This flow allocates. Constructors only. */ - ALLOCATES = 1 << 5, + ALLOCATES = 1 << 6, /** This flow calls super. Constructors only. */ - CALLS_SUPER = 1 << 6, + CALLS_SUPER = 1 << 7, // conditional /** This flow conditionally returns in a child flow. */ - CONDITIONALLY_RETURNS = 1 << 7, + CONDITIONALLY_RETURNS = 1 << 8, /** This flow conditionally throws in a child flow. */ - CONDITIONALLY_THROWS = 1 << 8, + CONDITIONALLY_THROWS = 1 << 9, /** This flow conditionally breaks in a child flow. */ - CONDITIONALLY_BREAKS = 1 << 9, + CONDITIONALLY_BREAKS = 1 << 10, /** This flow conditionally continues in a child flow. */ - CONDITIONALLY_CONTINUES = 1 << 10, + CONDITIONALLY_CONTINUES = 1 << 11, /** This flow conditionally allocates in a child flow. Constructors only. */ - CONDITIONALLY_ALLOCATES = 1 << 11, + CONDITIONALLY_ALLOCATES = 1 << 12, // special /** This is an inlining flow. */ - INLINE_CONTEXT = 1 << 12, + INLINE_CONTEXT = 1 << 13, /** This is a flow with explicitly disabled bounds checking. */ - UNCHECKED_CONTEXT = 1 << 13, + UNCHECKED_CONTEXT = 1 << 14, // masks @@ -119,6 +123,7 @@ export const enum FlowFlags { /** Any categorical flag. */ ANY_CATEGORICAL = FlowFlags.RETURNS | FlowFlags.RETURNS_WRAPPED + | FlowFlags.RETURNS_NONNULL | FlowFlags.THROWS | FlowFlags.BREAKS | FlowFlags.CONTINUES @@ -291,7 +296,7 @@ export class Flow { } /** Gets a free temporary local of the specified type. */ - getTempLocal(type: Type, wrapped: bool = false): Local { + getTempLocal(type: Type, wrapped: bool = false, nonNull: bool = false): Local { var parentFunction = this.parentFunction; var temps: Local[] | null; switch (type.toNativeType()) { @@ -313,6 +318,9 @@ export class Flow { if (type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) { if (wrapped) this.setLocalFlag(local.index, LocalFlags.WRAPPED); else this.unsetLocalFlag(local.index, LocalFlags.WRAPPED); + } else { + if (nonNull) this.setLocalFlag(local.index, LocalFlags.NONNULL); + else this.unsetLocalFlag(local.index, LocalFlags.NONNULL); } return local; } @@ -363,7 +371,7 @@ export class Flow { } /** Gets and immediately frees a temporary local of the specified type. */ - getAndFreeTempLocal(type: Type, wrapped: bool): Local { + getAndFreeTempLocal(type: Type, wrapped: bool = false, nonnull: bool = false): Local { var parentFunction = this.parentFunction; var temps: Local[]; switch (type.toNativeType()) { @@ -400,13 +408,16 @@ export class Flow { if (type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) { if (wrapped) this.setLocalFlag(local.index, LocalFlags.WRAPPED); else this.unsetLocalFlag(local.index, LocalFlags.WRAPPED); + } else { + if (nonnull) this.setLocalFlag(local.index, LocalFlags.NONNULL); + else this.unsetLocalFlag(local.index, LocalFlags.NONNULL); } return local; } /** Adds a new scoped local of the specified name. */ addScopedLocal(name: string, type: Type, wrapped: bool, reportNode: Node | null = null): Local { - var scopedLocal = this.getTempLocal(type, false); + var scopedLocal = this.getTempLocal(type); if (!this.scopedLocals) this.scopedLocals = new Map(); else { let existingLocal = this.scopedLocals.get(name); @@ -463,10 +474,10 @@ export class Flow { var numParameters = parameterTypes.length; var temps = new Array(numParameters); for (let i = 0; i < numParameters; ++i) { - temps[i] = this.getTempLocal(parameterTypes[i], false); + temps[i] = this.getTempLocal(parameterTypes[i]); } var thisType = signature.thisType; - if (thisType) temps.push(this.getTempLocal(thisType, false)); + if (thisType) temps.push(this.getTempLocal(thisType)); return temps; } @@ -651,6 +662,7 @@ export class Flow { if (!isTeeLocal(expr)) break; let local = this.parentFunction.localsByIndex[getSetLocalIndex(expr)]; this.setLocalFlag(local.index, LocalFlags.NONNULL); + this.inheritNonnullIfTrue(getSetLocalValue(expr)); // must have been true-ish as well break; } case ExpressionId.GetLocal: { @@ -729,6 +741,18 @@ export class Flow { } break; } + case ExpressionId.Call: { + let name = getCallTarget(expr); + let program = this.parentFunction.program; + switch (name) { + case program.retainInstance.internalName: + case program.retainReleaseInstance.internalName: { + this.inheritNonnullIfTrue(getCallOperand(expr, 0)); + break; + } + } + break; + } } } diff --git a/src/module.ts b/src/module.ts index 164e2b6d..653b54d3 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1465,6 +1465,14 @@ export function getCallTarget(expr: ExpressionRef): string | null { return readString(_BinaryenCallGetTarget(expr)); } +export function getCallOperandCount(expr: ExpressionRef): i32 { + return _BinaryenCallGetNumOperands(expr); +} + +export function getCallOperand(expr: ExpressionRef, index: Index): ExpressionRef { + return _BinaryenCallGetOperand(expr, index); +} + export function getHostOp(expr: ExpressionRef): ExpressionRef { return _BinaryenHostGetOp(expr); } diff --git a/src/program.ts b/src/program.ts index 755e411e..56a9730e 100644 --- a/src/program.ts +++ b/src/program.ts @@ -375,6 +375,8 @@ export class Program extends DiagnosticEmitter { releaseInstance: Function; /** RT `__retainRelease(newRef: usize, oldRef: usize): usize` */ retainReleaseInstance: Function; + /** RT `__skippedRelease(newRef: usize, oldRef: usize): usize` */ + skippedReleaseInstance: Function; /** RT `__collect(): void` */ collectInstance: Function; /** RT `__visit(ref: usize, cookie: u32): void` */ @@ -823,6 +825,7 @@ export class Program extends DiagnosticEmitter { this.retainInstance = this.requireFunction(CommonSymbols.retain); this.releaseInstance = this.requireFunction(CommonSymbols.release); this.retainReleaseInstance = this.requireFunction(CommonSymbols.retainRelease); + this.skippedReleaseInstance = this.requireFunction(CommonSymbols.skippedRelease); this.collectInstance = this.requireFunction(CommonSymbols.collect); this.typeinfoInstance = this.requireFunction(CommonSymbols.typeinfo); this.instanceofInstance = this.requireFunction(CommonSymbols.instanceof_); diff --git a/std/assembly/array.ts b/std/assembly/array.ts index 934dfda7..4f605bdb 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -120,7 +120,7 @@ export class Array extends ArrayBufferView { @operator("{}=") private __unchecked_set(index: i32, value: T): void { if (isManaged()) { let offset = this.dataStart + (index << alignof()); - store(offset, __retainRelease(changetype(value), load(offset))); + store(offset, __retainRelease(load(offset), changetype(value))); } else { store(this.dataStart + (index << alignof()), value); } @@ -182,7 +182,7 @@ export class Array extends ArrayBufferView { ensureSize(changetype(this), newLength, alignof()); if (isManaged()) { let offset = this.dataStart + (length << alignof()); - store(offset, __retainRelease(changetype(value), load(offset))); + store(offset, __retainRelease(load(offset), changetype(value))); } else { store(this.dataStart + (length << alignof()), value); } diff --git a/std/assembly/map.ts b/std/assembly/map.ts index a609c6bc..41594773 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -106,7 +106,7 @@ export class Map { var entry = this.find(key, hashCode); // unmanaged! if (entry) { entry.value = isManaged() - ? changetype(__retainRelease(changetype(value), changetype(entry.value))) + ? changetype(__retainRelease(changetype(entry.value), changetype(value))) : value; } else { // check if rehashing is necessary diff --git a/std/assembly/rt.ts b/std/assembly/rt.ts index 921be17f..400583fc 100644 --- a/std/assembly/rt.ts +++ b/std/assembly/rt.ts @@ -68,7 +68,11 @@ export function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize // // @ts-ignore: decorator // @builtin @unsafe -// export declare function __retainRelease(ref: usize, oldRef: usize): usize; +// export declare function __retainRelease(oldRef: usize, newRef: usize): usize; + +// // @ts-ignore: decorator +// @builtin @unsafe +// export declare function __skippedRelease(oldRef: usize, newRef: usize): usize; // // @ts-ignore: decorator // @builtin @unsafe diff --git a/std/assembly/rt/README.md b/std/assembly/rt/README.md index f3fd3c33..3b15fd7e 100644 --- a/std/assembly/rt/README.md +++ b/std/assembly/rt/README.md @@ -27,8 +27,11 @@ Interface ### Internals -* **__retainRelease**(newRef: `usize`, oldRef: `usize`): `usize`
- Retains a reference to an object type while releasing the reference it replaces. Returns the retained reference. +* **__retainRelease**(oldRef: `usize`, newRef: `usize`): `usize`
+ Retains a reference to a new object type while releasing the reference it replaces. Returns the retained reference. This is a workaround. + +* **__skippedRelease**(oldRef: `usize`, newRef: `usize`): `usize`
+ Ignores a reference to a new object type while releasing the reference it replaces. Returns the ignored reference. This is a workaround. * **__visit**(ref: `usize`, cookie: `u32`): `void`
Concrete visitor implementation called during traversal. Cookie can be used to indicate one of multiple operations. diff --git a/std/assembly/rt/index.d.ts b/std/assembly/rt/index.d.ts index 7944eab5..f17286d9 100644 --- a/std/assembly/rt/index.d.ts +++ b/std/assembly/rt/index.d.ts @@ -3,7 +3,8 @@ declare function __realloc(ref: usize, size: usize): usize; declare function __free(ref: usize): void; declare function __retain(ref: usize): void; declare function __release(ref: usize): void; -declare function __retainRelease(ref: usize, oldRef: usize): usize; +declare function __retainRelease(oldRef: usize, newRef: usize): usize; +declare function __skippedRelease(oldRef: usize, newRef: usize): usize; declare function __collect(): void; declare function __typeinfo(id: u32): u32; declare function __instanceof(ref: usize, superId: u32): bool; diff --git a/std/assembly/rt/pure.ts b/std/assembly/rt/pure.ts index 7ece1415..e91718bc 100644 --- a/std/assembly/rt/pure.ts +++ b/std/assembly/rt/pure.ts @@ -61,7 +61,7 @@ import { TypeinfoFlags } from "shared/typeinfo"; @inline const VISIT_COLLECTWHITE = 5; // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe function __visit(ref: usize, cookie: i32): void { if (ref < HEAP_BASE) return; var s = changetype(ref - BLOCK_OVERHEAD); @@ -243,27 +243,34 @@ function collectWhite(s: Block): void { } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __retain(ref: usize): usize { if (ref > HEAP_BASE) increment(changetype(ref - BLOCK_OVERHEAD)); return ref; } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __release(ref: usize): void { if (ref > HEAP_BASE) decrement(changetype(ref - BLOCK_OVERHEAD)); } // @ts-ignore: decorator -@global @unsafe @builtin -export function __retainRelease(ref: usize, oldRef: usize): usize { - if (ref != oldRef) { +@global @unsafe +export function __retainRelease(oldRef: usize, newRef: usize): usize { + if (newRef != oldRef) { let heapBase = HEAP_BASE; - if (ref > heapBase) increment(changetype(ref - BLOCK_OVERHEAD)); + if (newRef > heapBase) increment(changetype(newRef - BLOCK_OVERHEAD)); if (oldRef > heapBase) decrement(changetype(oldRef - BLOCK_OVERHEAD)); } - return ref; + return newRef; +} + +// @ts-ignore: decorator +@global @unsafe +export function __skippedRelease(oldRef: usize, newRef: usize): usize { + if (oldRef > HEAP_BASE) decrement(changetype(oldRef - BLOCK_OVERHEAD)); + return newRef; } // @ts-ignore: decorator diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index 3dfc6023..45d1fd5b 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -9,7 +9,7 @@ var startOffset: usize = (HEAP_BASE + AL_MASK) & ~AL_MASK; var offset: usize = startOffset; // @ts-ignore: decorator -@unsafe @global @builtin +@unsafe @global export function __alloc(size: usize, id: u32): usize { if (size > BLOCK_MAXSIZE) unreachable(); var ptr = offset + BLOCK_OVERHEAD; @@ -30,7 +30,7 @@ export function __alloc(size: usize, id: u32): usize { } // @ts-ignore: decorator -@unsafe @global @builtin +@unsafe @global export function __realloc(ref: usize, size: usize): usize { var block = changetype(ref - BLOCK_OVERHEAD); var oldSize = block.rtSize; @@ -45,7 +45,7 @@ export function __realloc(ref: usize, size: usize): usize { } // @ts-ignore: decorator -@unsafe @global @builtin +@unsafe @global export function __free(ref: usize): void { } @@ -56,28 +56,34 @@ export function __free(ref: usize): void { // } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __retain(ref: usize): usize { return ref; } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __release(ref: usize): void { } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __visit(ref: usize, cookie: u32): void { } // @ts-ignore: decorator -@global @unsafe @builtin -export function __retainRelease(ref: usize, oldRef: usize): usize { - return ref; +@global @unsafe +export function __retainRelease(oldRef: usize, newRef: usize): usize { + return newRef; } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe +export function __skippedRelease(oldRef: usize, newRef: usize): usize { + return newRef; +} + +// @ts-ignore: decorator +@global @unsafe export function __collect(): void { } diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index faab486b..e0a2da44 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -337,7 +337,7 @@ function searchBlock(root: Root, size: usize): Block | null { // search second level var slMap = GETSL(root, fl) & (~0 << sl); - var head: Block | null; + var head: Block | null = null; if (!slMap) { // search next larger first level let flMap = root.flMap & (~0 << (fl + 1)); @@ -534,7 +534,7 @@ export function freeBlock(root: Root, block: Block): void { } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __alloc(size: usize, id: u32): usize { var root = ROOT; if (!root) { @@ -547,7 +547,7 @@ export function __alloc(size: usize, id: u32): usize { } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __realloc(ref: usize, size: usize): usize { if (DEBUG) assert(ROOT); // must be initialized assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned @@ -555,7 +555,7 @@ export function __realloc(ref: usize, size: usize): usize { } // @ts-ignore: decorator -@global @unsafe @builtin +@global @unsafe export function __free(ref: usize): void { if (DEBUG) assert(ROOT); // must be initialized assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index f99648fd..04238018 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -961,11 +961,11 @@ function SUBARRAY( else begin = min(begin, length); if (end < 0) end = max(length + end, begin); else end = max(min(end, length), begin); - var out = __alloc(offsetof(), idof()); - changetype(out).data = array.data; // retains - changetype(out).dataStart = array.dataStart + (begin << alignof()); - changetype(out).dataLength = (end - begin) << alignof(); - return changetype(out); // retains + var out = changetype(__alloc(offsetof(), idof())); // retains + out.data = array.data; // retains + out.dataStart = array.dataStart + (begin << alignof()); + out.dataLength = (end - begin) << alignof(); + return out; } // @ts-ignore: decorator diff --git a/tests/binaryen/block-pre.js b/tests/binaryen/block-pre.js new file mode 100644 index 00000000..90689be0 --- /dev/null +++ b/tests/binaryen/block-pre.js @@ -0,0 +1,26 @@ +var binaryen = require("binaryen"); +var mod = binaryen.parseText(` +(module + (global $ref (mut i32) (i32.const 1)) + (func $test + (call $release + (block (result i32) + (global.get $ref) + (global.set $ref + (call $retain + (i32.const 2) (; some-expression-that-might-conflict-with-a-temp ;) + ) + ) + ) + ) + ) + (func $retain (param i32) (result i32) + (local.get 0) + ) + (func $release (param i32) + (nop) + ) +) +`); +if (!mod.validate()) console.log(":-("); +else console.log(mod.emitText()); diff --git a/tests/compiler.js b/tests/compiler.js index b478ac36..f58aa2a8 100644 --- a/tests/compiler.js +++ b/tests/compiler.js @@ -52,9 +52,9 @@ if (args.help) { const features = process.env.ASC_FEATURES ? process.env.ASC_FEATURES.split(",") : []; const featuresConfig = require("./features.json"); -var failedTests = []; +var failedTests = new Set(); var failedMessages = new Map(); -var skippedTests = []; +var skippedTests = new Set(); var skippedMessages = new Map(); const basedir = path.join(__dirname, "compiler"); @@ -124,7 +124,7 @@ tests.forEach(filename => { }); if (missing_features.length) { console.log("- " + colorsUtil.yellow("feature SKIPPED") + " (" + missing_features.join(", ") + ")\n"); - skippedTests.push(basename); + skippedTests.add(basename); skippedMessages.set(basename, "feature not enabled"); return; } @@ -166,7 +166,7 @@ tests.forEach(filename => { if (!stderrString.includes(expectedError)) { console.log(`Expected error "${expectedError}" was not in the error output.`); console.log("- " + colorsUtil.red("error check ERROR")); - failedTests.push(basename); + failedTests.add(basename); console.log(); return; } @@ -188,6 +188,7 @@ tests.forEach(filename => { if (expected != actual) { console.log("- " + colorsUtil.red("compare ERROR")); failed = true; + failedTests.add(basename); } else { console.log("- " + colorsUtil.green("compare OK")); } @@ -197,6 +198,7 @@ tests.forEach(filename => { console.log(diffs); console.log("- " + colorsUtil.red("diff ERROR")); failed = true; + failedTests.add(basename); } else { console.log("- " + colorsUtil.green("diff OK")); } @@ -227,20 +229,21 @@ tests.forEach(filename => { console.log(); if (err) { stderr.write(err.stack + os.EOL); + failed = true; failedMessages.set(basename, err.message); - failedTests.push(basename); + failedTests.add(basename); return 1; } let untouchedBuffer = fs.readFileSync(path.join(basedir, "temp.wasm")); let optimizedBuffer = stdout.toBuffer(); if (!testInstantiate(basename, untouchedBuffer, "untouched")) { failed = true; - failedTests.push(basename); + failedTests.add(basename); } else { console.log(); if (!testInstantiate(basename, optimizedBuffer, "optimized")) { failed = true; - failedTests.push(basename); + failedTests.add(basename); } } console.log(); @@ -250,17 +253,17 @@ tests.forEach(filename => { if (v8_no_flags) v8.setFlagsFromString(v8_no_flags); }); -if (skippedTests.length) { - console.log(colorsUtil.yellow("WARNING: ") + colorsUtil.white(skippedTests.length + " compiler tests have been skipped:\n")); +if (skippedTests.size) { + console.log(colorsUtil.yellow("WARNING: ") + colorsUtil.white(skippedTests.size + " compiler tests have been skipped:\n")); skippedTests.forEach(name => { var message = skippedMessages.has(name) ? colorsUtil.gray("[" + skippedMessages.get(name) + "]") : ""; console.log(" " + name + " " + message); }); console.log(); } -if (failedTests.length) { +if (failedTests.size) { process.exitCode = 1; - console.log(colorsUtil.red("ERROR: ") + colorsUtil.white(failedTests.length + " compiler tests had failures:\n")); + console.log(colorsUtil.red("ERROR: ") + colorsUtil.white(failedTests.size + " compiler tests had failures:\n")); failedTests.forEach(name => { var message = failedMessages.has(name) ? colorsUtil.gray("[" + failedMessages.get(name) + "]") : ""; console.log(" " + name + " " + message); diff --git a/tests/compiler/abi.optimized.wat b/tests/compiler/abi.optimized.wat index 2bd761fb..8e470f0d 100644 --- a/tests/compiler/abi.optimized.wat +++ b/tests/compiler/abi.optimized.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") + (data (i32.const 8) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") (global $abi/condition (mut i32) (i32.const 0)) (global $abi/y (mut i32) (i32.const 0)) (export "memory" (memory $0)) diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index daa77aca..93d816db 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") + (data (i32.const 8) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $abi/condition (mut i32) (i32.const 0)) diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index b4d131e5..61495f7c 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -5,8 +5,9 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a") - (data (i32.const 24) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 8) "^\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 120) "\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 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/argc (mut i32) (i32.const 0)) @@ -56,9 +57,9 @@ i32.load offset=12 i32.ge_u if - i32.const 0 i32.const 24 - i32.const 96 + i32.const 136 + i32.const 97 i32.const 45 call $~lib/builtins/abort unreachable @@ -70,9 +71,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -98,9 +99,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -112,12 +113,6 @@ (func $assert-nonnull/testElem (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/array/Array#__get - local.tee $0 - i32.eqz - if - unreachable - end - local.get $0 ) (func $assert-nonnull/testAll (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -127,12 +122,6 @@ end local.get $0 call $~lib/array/Array#__get - local.tee $0 - i32.eqz - if - unreachable - end - local.get $0 i32.load local.tee $0 i32.eqz @@ -159,16 +148,19 @@ call_indirect (type $FUNCSIG$i) ) (func $assert-nonnull/testRet (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) i32.const 0 global.set $~lib/argc local.get $0 call_indirect (type $FUNCSIG$i) local.tee $0 + local.set $1 + local.get $0 i32.eqz if unreachable end - local.get $0 + local.get $1 ) (func $assert-nonnull/testObjFn (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 @@ -178,17 +170,20 @@ call_indirect (type $FUNCSIG$i) ) (func $assert-nonnull/testObjRet (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) i32.const 0 global.set $~lib/argc local.get $0 i32.load offset=4 call_indirect (type $FUNCSIG$i) local.tee $0 + local.set $1 + local.get $0 i32.eqz if unreachable end - local.get $0 + local.get $1 ) (func $null (; 14 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 74528f3c..8383cf20 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -1,12 +1,15 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 8) "^\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 120) "\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 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/argc (mut i32) (i32.const 0)) @@ -23,19 +26,36 @@ (export "testRet" (func $assert-nonnull/testRet)) (export "testObjFn" (func $assert-nonnull/testObjFn)) (export "testObjRet" (func $assert-nonnull/testObjRet)) - (func $assert-nonnull/testVar (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $assert-nonnull/testVar (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 local.tee $1 if (result i32) local.get $1 else unreachable end + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $assert-nonnull/testObj (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assert-nonnull/testObj (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 local.tee $1 if (result i32) local.get $1 @@ -43,10 +63,18 @@ unreachable end i32.load + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $assert-nonnull/testProp (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assert-nonnull/testProp (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 i32.load local.tee $1 if (result i32) @@ -54,8 +82,13 @@ else unreachable end + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $~lib/array/Array#__unchecked_get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -63,16 +96,17 @@ i32.shl i32.add i32.load + call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 0 i32.const 24 - i32.const 96 + i32.const 136 + i32.const 97 i32.const 45 call $~lib/builtins/abort unreachable @@ -84,9 +118,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -95,9 +129,12 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $assert-nonnull/testArr (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assert-nonnull/testArr (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 local.tee $1 if (result i32) local.get $1 @@ -106,8 +143,12 @@ end i32.const 0 call $~lib/array/Array#__get + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $~lib/array/Array#__unchecked_get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -115,8 +156,9 @@ i32.shl i32.add i32.load + call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -124,9 +166,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -135,78 +177,107 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $assert-nonnull/testElem (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - ) - (func $assert-nonnull/testAll (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - i32.load - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - ) - (func $assert-nonnull/testAll2 (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - i32.load - local.tee $1 - if (result i32) - local.get $1 - else - unreachable - end - ) - (func $assert-nonnull/testFn (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) - ) - (func $assert-nonnull/testFn2 (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assert-nonnull/testElem (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assert-nonnull/testAll (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end + i32.const 0 + call $~lib/array/Array#__get + local.tee $1 + i32.load + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assert-nonnull/testAll2 (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end + i32.const 0 + call $~lib/array/Array#__get + local.tee $1 + i32.load + local.tee $2 + if (result i32) + local.get $2 + else + unreachable + end + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assert-nonnull/testFn (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + block (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + local.tee $1 + end + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assert-nonnull/testFn2 (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 local.tee $1 if (result i32) local.get $1 @@ -214,49 +285,91 @@ unreachable end local.set $2 - i32.const 0 - global.set $~lib/argc - local.get $2 - call_indirect (type $FUNCSIG$i) + block (result i32) + i32.const 0 + global.set $~lib/argc + local.get $2 + call_indirect (type $FUNCSIG$i) + local.tee $1 + end + call $~lib/rt/stub/__retain + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $3 ) - (func $assert-nonnull/testRet (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assert-nonnull/testRet (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) block (result i32) i32.const 0 global.set $~lib/argc local.get $0 call_indirect (type $FUNCSIG$i) + local.tee $1 end - local.tee $1 + local.tee $2 if (result i32) - local.get $1 + local.get $2 else unreachable end + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $assert-nonnull/testObjFn (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - call_indirect (type $FUNCSIG$i) - ) - (func $assert-nonnull/testObjRet (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assert-nonnull/testObjFn (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop block (result i32) i32.const 0 global.set $~lib/argc local.get $0 i32.load offset=4 call_indirect (type $FUNCSIG$i) + local.tee $1 end - local.tee $1 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assert-nonnull/testObjRet (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + block (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + call_indirect (type $FUNCSIG$i) + local.tee $1 + end + local.tee $2 if (result i32) - local.get $1 + local.get $2 else unreachable end + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 ) - (func $null (; 17 ;) (type $FUNCSIG$v) + (func $null (; 19 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/assert.optimized.wat b/tests/compiler/assert.optimized.wat index be9888f2..b90324ac 100644 --- a/tests/compiler/assert.optimized.wat +++ b/tests/compiler/assert.optimized.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s") - (data (i32.const 48) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s") + (data (i32.const 48) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e") (export "memory" (memory $0)) (func $start (; 0 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.untouched.wat index 1bde422d..413ab66a 100644 --- a/tests/compiler/assert.untouched.wat +++ b/tests/compiler/assert.untouched.wat @@ -3,8 +3,8 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s\00") - (data (i32.const 48) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e\00") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00a\00s\00s\00e\00r\00t\00.\00t\00s\00") + (data (i32.const 48) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00m\00u\00s\00t\00 \00b\00e\00 \00t\00r\00u\00e\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) diff --git a/tests/compiler/bool.optimized.wat b/tests/compiler/bool.optimized.wat index da10001a..eed8bb5a 100644 --- a/tests/compiler/bool.optimized.wat +++ b/tests/compiler/bool.optimized.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") + (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") (global $bool/i i32 (i32.const 2)) (global $bool/I i64 (i64.const 2)) (global $bool/u i32 (i32.const 2)) diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.untouched.wat index dc5d0846..c22f19ce 100644 --- a/tests/compiler/bool.untouched.wat +++ b/tests/compiler/bool.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00") + (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $bool/i (mut i32) (i32.const 2)) diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 582a84ab..b30dbd65 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -4,9 +4,9 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") - (data (i32.const 52) "\01\00\00\00\10") - (data (i32.const 64) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data (i32.const 52) "\01\00\00\00\01") + (data (i32.const 64) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") (table $0 2 funcref) (elem (i32.const 0) $builtins/test $start:builtins~anonymous|0) (global $builtins/b (mut i32) (i32.const 0)) diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 2a987dde..c3b31b21 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -6,9 +6,9 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00") - (data (i32.const 48) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 64) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00") + (data (i32.const 48) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 64) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") (table $0 2 funcref) (elem (i32.const 0) $null $start:builtins~anonymous|0) (global $builtins/b (mut i32) (i32.const 0)) diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.optimized.wat index 870e20fe..a9c60e8c 100644 --- a/tests/compiler/call-inferred.optimized.wat +++ b/tests/compiler/call-inferred.optimized.wat @@ -1,7 +1,7 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") (export "memory" (memory $0)) (func $start (; 0 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat index b3ea04e4..4d8f89f1 100644 --- a/tests/compiler/call-inferred.untouched.wat +++ b/tests/compiler/call-inferred.untouched.wat @@ -6,7 +6,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index 16a404bf..b045853e 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -4,12 +4,11 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00 ") - (data (i32.const 24) "c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") (table $0 2 funcref) (elem (i32.const 0) $null $call-optional/opt|trampoline) (global $~lib/argc (mut i32) (i32.const 0)) - (global $call-optional/optIndirect (mut i32) (i32.const 1)) + (global $call-optional/optIndirect i32 (i32.const 1)) (export "memory" (memory $0)) (start $start) (func $call-optional/opt|trampoline (; 1 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 622f6af3..da1f755b 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00 \00\00\00\00\00\00\00\00\00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00") (table $0 2 funcref) (elem (i32.const 0) $null $call-optional/opt|trampoline) (global $~lib/argc (mut i32) (i32.const 0)) diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index e5c9ddb6..ca177564 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -6,26 +6,26 @@ (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 64) "\10\00\00\00\1a") - (data (i32.const 80) "c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -33,20 +33,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -54,16 +54,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -72,72 +72,26 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 108 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 i32.const 16 i32.sub local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 - i32.store + i32.store offset=8 + local.get $2 local.get $0 + i32.store offset=12 + local.get $3 ) - (func $call-super/A#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/A#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -149,7 +103,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 8 i32.const 4 call $~lib/builtins/abort @@ -157,12 +111,11 @@ end local.get $0 ) - (func $call-super/B#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/B#constructor (; 3 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc call $call-super/A#constructor local.tee $0 i32.const 2 @@ -173,7 +126,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 17 i32.const 4 call $~lib/builtins/abort @@ -185,7 +138,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 18 i32.const 4 call $~lib/builtins/abort @@ -193,7 +146,7 @@ end local.get $0 ) - (func $call-super/test1 (; 6 ;) (type $FUNCSIG$v) + (func $call-super/test1 (; 4 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/B#constructor local.tee $0 @@ -202,7 +155,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 24 i32.const 2 call $~lib/builtins/abort @@ -214,26 +167,24 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 25 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $call-super/D#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/D#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 20 - call $~lib/util/runtime/register + i32.const 6 + call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -248,7 +199,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 40 i32.const 4 call $~lib/builtins/abort @@ -260,7 +211,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 41 i32.const 4 call $~lib/builtins/abort @@ -268,7 +219,7 @@ end local.get $0 ) - (func $call-super/test2 (; 8 ;) (type $FUNCSIG$v) + (func $call-super/test2 (; 6 ;) (type $FUNCSIG$v) (local $0 i32) call $call-super/D#constructor local.tee $0 @@ -277,7 +228,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 47 i32.const 2 call $~lib/builtins/abort @@ -289,21 +240,20 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 48 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $call-super/E#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/E#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 21 - call $~lib/util/runtime/register + i32.const 7 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -315,7 +265,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 58 i32.const 4 call $~lib/builtins/abort @@ -323,12 +273,11 @@ end local.get $0 ) - (func $call-super/test3 (; 10 ;) (type $FUNCSIG$v) + (func $call-super/test3 (; 8 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 22 - call $~lib/util/runtime/register + i32.const 8 + call $~lib/rt/stub/__alloc call $call-super/E#constructor local.tee $0 i32.const 2 @@ -339,7 +288,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 68 i32.const 2 call $~lib/builtins/abort @@ -351,26 +300,24 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 69 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $call-super/H#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/H#constructor (; 9 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 24 - call $~lib/util/runtime/register + i32.const 10 + call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 23 - call $~lib/util/runtime/register + i32.const 9 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -381,7 +328,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test4 (; 12 ;) (type $FUNCSIG$v) + (func $call-super/test4 (; 10 ;) (type $FUNCSIG$v) (local $0 i32) block (result i32) call $call-super/H#constructor @@ -392,7 +339,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 86 i32.const 2 call $~lib/builtins/abort @@ -404,26 +351,24 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 87 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $call-super/J#constructor (; 13 ;) (type $FUNCSIG$i) (result i32) + (func $call-super/J#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 26 - call $~lib/util/runtime/register + i32.const 12 + call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 25 - call $~lib/util/runtime/register + i32.const 11 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -434,7 +379,7 @@ i32.store offset=4 local.get $0 ) - (func $call-super/test5 (; 14 ;) (type $FUNCSIG$v) + (func $call-super/test5 (; 12 ;) (type $FUNCSIG$v) (local $0 i32) block (result i32) call $call-super/J#constructor @@ -445,7 +390,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 106 i32.const 2 call $~lib/builtins/abort @@ -457,25 +402,25 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 107 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $start (; 15 ;) (type $FUNCSIG$v) - i32.const 112 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + (func $start (; 13 ;) (type $FUNCSIG$v) + i32.const 64 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset call $call-super/test1 call $call-super/test2 call $call-super/test3 call $call-super/test4 call $call-super/test5 ) - (func $null (; 16 ;) (type $FUNCSIG$v) + (func $null (; 14 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index a98336e8..13437eaa 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -3,74 +3,62 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 64) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 108)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 52)) (export "memory" (memory $0)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -80,22 +68,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -104,76 +92,32 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $call-super/A#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/A#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -187,7 +131,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 8 i32.const 4 call $~lib/builtins/abort @@ -195,17 +139,19 @@ end local.get $0 ) - (func $call-super/B#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/B#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 if (result i32) local.get $0 else i32.const 8 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end call $call-super/A#constructor + local.tee $1 local.set $0 local.get $0 i32.const 2 @@ -217,7 +163,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 17 i32.const 4 call $~lib/builtins/abort @@ -230,7 +176,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 18 i32.const 4 call $~lib/builtins/abort @@ -238,7 +184,10 @@ end local.get $0 ) - (func $call-super/test1 (; 8 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__release (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $call-super/test1 (; 6 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/B#constructor @@ -250,7 +199,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 24 i32.const 2 call $~lib/builtins/abort @@ -263,21 +212,23 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 25 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release ) - (func $call-super/C#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/C#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -285,17 +236,19 @@ i32.store local.get $0 ) - (func $call-super/D#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/D#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 if (result i32) local.get $0 else i32.const 8 - call $~lib/util/runtime/allocate - i32.const 20 - call $~lib/util/runtime/register + i32.const 6 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end call $call-super/C#constructor + local.tee $1 local.set $0 local.get $0 i32.const 2 @@ -307,7 +260,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 40 i32.const 4 call $~lib/builtins/abort @@ -320,7 +273,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 41 i32.const 4 call $~lib/builtins/abort @@ -328,7 +281,7 @@ end local.get $0 ) - (func $call-super/test2 (; 11 ;) (type $FUNCSIG$v) + (func $call-super/test2 (; 9 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/D#constructor @@ -340,7 +293,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 47 i32.const 2 call $~lib/builtins/abort @@ -353,22 +306,24 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 48 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release ) - (func $call-super/E#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/E#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 21 - call $~lib/util/runtime/register + i32.const 7 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -382,7 +337,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 58 i32.const 4 call $~lib/builtins/abort @@ -390,25 +345,27 @@ end local.get $0 ) - (func $call-super/F#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/F#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 22 - call $~lib/util/runtime/register + i32.const 8 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 call $call-super/E#constructor + local.tee $1 local.set $0 local.get $0 i32.const 2 i32.store offset=4 local.get $0 ) - (func $call-super/test3 (; 14 ;) (type $FUNCSIG$v) + (func $call-super/test3 (; 12 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/F#constructor @@ -420,7 +377,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 68 i32.const 2 call $~lib/builtins/abort @@ -433,21 +390,23 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 69 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release ) - (func $call-super/G#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/G#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 23 - call $~lib/util/runtime/register + i32.const 9 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -455,25 +414,27 @@ i32.store local.get $0 ) - (func $call-super/H#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/H#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 24 - call $~lib/util/runtime/register + i32.const 10 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 call $call-super/G#constructor + local.tee $1 local.set $0 local.get $0 i32.const 2 i32.store offset=4 local.get $0 ) - (func $call-super/test4 (; 17 ;) (type $FUNCSIG$v) + (func $call-super/test4 (; 15 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/H#constructor @@ -485,7 +446,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 86 i32.const 2 call $~lib/builtins/abort @@ -498,21 +459,23 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 87 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release ) - (func $call-super/I#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/I#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 25 - call $~lib/util/runtime/register + i32.const 11 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -520,25 +483,27 @@ i32.store local.get $0 ) - (func $call-super/J#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $call-super/J#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 26 - call $~lib/util/runtime/register + i32.const 12 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 call $call-super/I#constructor + local.tee $1 local.set $0 local.get $0 i32.const 2 i32.store offset=4 local.get $0 ) - (func $call-super/test5 (; 20 ;) (type $FUNCSIG$v) + (func $call-super/test5 (; 18 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 call $call-super/J#constructor @@ -550,7 +515,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 106 i32.const 2 call $~lib/builtins/abort @@ -563,33 +528,35 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 107 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release ) - (func $start:call-super (; 21 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (func $start:call-super (; 19 ;) (type $FUNCSIG$v) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset call $call-super/test1 call $call-super/test2 call $call-super/test3 call $call-super/test4 call $call-super/test5 ) - (func $start (; 22 ;) (type $FUNCSIG$v) + (func $start (; 20 ;) (type $FUNCSIG$v) call $start:call-super ) - (func $null (; 23 ;) (type $FUNCSIG$v) + (func $null (; 21 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/class-extends.untouched.wat b/tests/compiler/class-extends.untouched.wat index 9951a964..ea085c09 100644 --- a/tests/compiler/class-extends.untouched.wat +++ b/tests/compiler/class-extends.untouched.wat @@ -1,12 +1,22 @@ (module (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) (export "test" (func $class-extends/test)) - (func $class-extends/test (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__retain (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $class-extends/test (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load drop @@ -19,7 +29,9 @@ local.get $0 i32.const 3 i32.store16 offset=4 + local.get $0 + call $~lib/rt/stub/__release ) - (func $null (; 1 ;) (type $FUNCSIG$v) + (func $null (; 3 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index c529e9a5..65b67365 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -1,5 +1,6 @@ (module (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (memory $0 0) (table $0 1 funcref) @@ -7,20 +8,31 @@ (export "memory" (memory $0)) (export "test" (func $class-overloading/test)) (start $start) - (func $class-overloading/Foo#baz (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__retain (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $class-overloading/Foo#baz (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $class-overloading/test (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $class-overloading/test (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 call $class-overloading/Foo#baz + local.get $0 + call $~lib/rt/stub/__release ) - (func $start:class-overloading (; 2 ;) (type $FUNCSIG$v) + (func $start:class-overloading (; 4 ;) (type $FUNCSIG$v) i32.const 0 call $class-overloading/test ) - (func $start (; 3 ;) (type $FUNCSIG$v) + (func $start (; 5 ;) (type $FUNCSIG$v) call $start:class-overloading ) - (func $null (; 4 ;) (type $FUNCSIG$v) + (func $null (; 6 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 40ab207f..db8cd3d8 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -2,8 +2,7 @@ (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\10") - (data (i32.const 24) "c\00l\00a\00s\00s\00.\00t\00s") + (data (i32.const 8) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s") (export "memory" (memory $0)) (export "test" (func $class/test)) (func $class/test (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index abba2ca0..1af2d709 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -6,9 +6,10 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$fiff (func (param i32 f32 f32) (result f32))) + (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00") + (data (i32.const 8) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00l\00a\00s\00s\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $class/Animal.ONE (mut i32) (i32.const 1)) @@ -54,14 +55,17 @@ call $class/Animal.sub drop ) - (func $class/Animal#instanceAdd (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/stub/__retain (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $class/Animal#instanceAdd (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 local.get $2 i32.add global.get $class/Animal.ONE i32.add ) - (func $class/Animal#instanceSub (; 5 ;) (type $FUNCSIG$fiff) (param $0 i32) (param $1 f32) (param $2 f32) (result f32) + (func $class/Animal#instanceSub (; 6 ;) (type $FUNCSIG$fiff) (param $0 i32) (param $1 f32) (param $2 f32) (result f32) local.get $1 local.get $2 f32.sub @@ -69,9 +73,16 @@ f32.convert_i32_s f32.add ) - (func $class/test (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__release (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $class/test (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 1 i32.const 2 @@ -111,12 +122,17 @@ local.get $0 local.set $1 local.get $1 + call $~lib/rt/stub/__retain local.set $2 local.get $2 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) call $start:class ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index bc893ceb..81995fb6 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -3,8 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\10") - (data (i32.const 24) "c\00o\00m\00m\00a\00.\00t\00s") + (data (i32.const 8) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -69,7 +68,7 @@ end i32.const 0 global.set $comma/b - i32.const 0 + global.get $comma/b global.set $comma/a global.get $comma/a i32.const 1 @@ -105,9 +104,8 @@ i32.add global.set $comma/a global.get $comma/a - local.tee $0 global.set $comma/b - local.get $0 + global.get $comma/b global.set $comma/a global.get $comma/a i32.const 2 diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 10dffbc5..8dac9f76 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00") + (data (i32.const 8) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $comma/a (mut i32) (i32.const 0)) @@ -84,9 +84,8 @@ end block (result i32) i32.const 0 - local.tee $0 global.set $comma/b - local.get $0 + global.get $comma/b end global.set $comma/a block (result i32) @@ -128,9 +127,8 @@ global.set $comma/a block (result i32) global.get $comma/a - local.tee $0 global.set $comma/b - local.get $0 + global.get $comma/b end end global.set $comma/a diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index fd3e5742..290cc03c 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,15 +1,9 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$i (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (memory $0 0) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $constructor/emptyCtor (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) @@ -17,24 +11,27 @@ (global $constructor/justFieldInit (mut i32) (i32.const 0)) (global $constructor/justFieldNoInit (mut i32) (i32.const 0)) (global $constructor/ctorReturns (mut i32) (i32.const 0)) - (global $constructor/b (mut i32) (i32.const 1)) + (global $constructor/b i32 (i32.const 1)) (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) (global $constructor/ctorAllocates (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyAllocates (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -42,20 +39,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -63,16 +60,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -81,73 +78,88 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 64 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 i32.const 16 i32.sub local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 + ) + (func $start:constructor (; 1 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 16 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__alloc + global.set $constructor/emptyCtor + i32.const 4 + i32.const 4 + call $~lib/rt/stub/__alloc + local.tee $0 + i32.const 1 i32.store local.get $0 - ) - (func $constructor/CtorConditionallyAllocates#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) + global.set $constructor/emptyCtorWithFieldInit + i32.const 4 + i32.const 5 + call $~lib/rt/stub/__alloc + local.tee $0 + i32.const 0 + i32.store + local.get $0 + global.set $constructor/emptyCtorWithFieldNoInit + i32.const 0 + i32.const 6 + call $~lib/rt/stub/__alloc + global.set $constructor/none + i32.const 4 + i32.const 7 + call $~lib/rt/stub/__alloc + local.tee $0 + i32.const 1 + i32.store + local.get $0 + global.set $constructor/justFieldInit + i32.const 4 + i32.const 8 + call $~lib/rt/stub/__alloc + local.tee $0 + i32.const 0 + i32.store + local.get $0 + global.set $constructor/justFieldNoInit + i32.const 0 + global.set $constructor/ctorReturns + global.get $constructor/b + if (result i32) + i32.const 0 + else + i32.const 0 + i32.const 10 + call $~lib/rt/stub/__alloc + end + global.set $constructor/ctorConditionallyReturns + i32.const 0 + i32.const 11 + call $~lib/rt/stub/__alloc + global.set $constructor/ctorAllocates + i32.const 0 + local.set $0 block (result i32) global.get $constructor/b if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 26 - call $~lib/util/runtime/register + i32.const 12 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -155,93 +167,17 @@ end if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 26 - call $~lib/util/runtime/register + i32.const 12 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 - ) - (func $start:constructor (; 5 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 64 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register - global.set $constructor/emptyCtor - i32.const 4 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register - local.tee $0 - i32.const 1 - i32.store - local.get $0 - global.set $constructor/emptyCtorWithFieldInit - i32.const 4 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register - local.tee $0 - i32.const 0 - i32.store - local.get $0 - global.set $constructor/emptyCtorWithFieldNoInit - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 20 - call $~lib/util/runtime/register - global.set $constructor/none - i32.const 4 - call $~lib/util/runtime/allocate - i32.const 21 - call $~lib/util/runtime/register - local.tee $0 - i32.const 1 - i32.store - local.get $0 - global.set $constructor/justFieldInit - i32.const 4 - call $~lib/util/runtime/allocate - i32.const 22 - call $~lib/util/runtime/register - local.tee $0 - i32.const 0 - i32.store - local.get $0 - global.set $constructor/justFieldNoInit - i32.const 0 - call $~lib/allocator/arena/__mem_allocate - global.set $constructor/ctorReturns - block $__inlined_func$constructor/CtorConditionallyReturns#constructor (result i32) - global.get $constructor/b - if - i32.const 0 - call $~lib/allocator/arena/__mem_allocate - br $__inlined_func$constructor/CtorConditionallyReturns#constructor - end - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 24 - call $~lib/util/runtime/register - end - global.set $constructor/ctorConditionallyReturns - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 25 - call $~lib/util/runtime/register - global.set $constructor/ctorAllocates - call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 6 ;) (type $FUNCSIG$v) + (func $start (; 2 ;) (type $FUNCSIG$v) call $start:constructor ) - (func $null (; 7 ;) (type $FUNCSIG$v) + (func $null (; 3 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index f21f00bb..c866850e 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -1,18 +1,12 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $constructor/emptyCtor (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) @@ -24,63 +18,54 @@ (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) (global $constructor/ctorAllocates (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyAllocates (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 64)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 8)) (export "memory" (memory $0)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -90,22 +75,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -114,87 +99,43 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $constructor/EmptyCtor#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtor#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) - (func $constructor/EmptyCtorWithFieldInit#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtorWithFieldInit#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -202,14 +143,14 @@ i32.store local.get $0 ) - (func $constructor/EmptyCtorWithFieldNoInit#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/EmptyCtorWithFieldNoInit#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -217,26 +158,26 @@ i32.store local.get $0 ) - (func $constructor/None#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/None#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 20 - call $~lib/util/runtime/register + i32.const 6 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) - (func $constructor/JustFieldInit#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/JustFieldInit#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 21 - call $~lib/util/runtime/register + i32.const 7 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -244,14 +185,14 @@ i32.store local.get $0 ) - (func $constructor/JustFieldNoInit#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/JustFieldNoInit#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 22 - call $~lib/util/runtime/register + i32.const 8 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -259,37 +200,37 @@ i32.store local.get $0 ) - (func $constructor/CtorReturns#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorReturns#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 - call $~lib/memory/memory.allocate + call $~lib/rt/stub/__retain ) - (func $constructor/CtorConditionallyReturns#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorConditionallyReturns#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $constructor/b if i32.const 0 - call $~lib/memory/memory.allocate + call $~lib/rt/stub/__retain return end local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 24 - call $~lib/util/runtime/register + i32.const 10 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) - (func $constructor/CtorAllocates#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorAllocates#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 25 - call $~lib/util/runtime/register + i32.const 11 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -297,7 +238,7 @@ drop local.get $0 ) - (func $constructor/CtorConditionallyAllocates#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $constructor/CtorConditionallyAllocates#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $constructor/b if block (result i32) @@ -305,9 +246,9 @@ i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 26 - call $~lib/util/runtime/register + i32.const 12 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -318,24 +259,24 @@ i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 26 - call $~lib/util/runtime/register + i32.const 12 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) - (func $start:constructor (; 16 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (func $start:constructor (; 12 ;) (type $FUNCSIG$v) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 call $constructor/EmptyCtor#constructor global.set $constructor/emptyCtor @@ -367,9 +308,9 @@ call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 17 ;) (type $FUNCSIG$v) + (func $start (; 13 ;) (type $FUNCSIG$v) call $start:constructor ) - (func $null (; 18 ;) (type $FUNCSIG$v) + (func $null (; 14 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/declare.optimized.wat b/tests/compiler/declare.optimized.wat index 59f7a991..7da25a0e 100644 --- a/tests/compiler/declare.optimized.wat +++ b/tests/compiler/declare.optimized.wat @@ -7,8 +7,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\14") - (data (i32.const 24) "d\00e\00c\00l\00a\00r\00e\00.\00t\00s") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") (export "memory" (memory $0)) (start $start) (func $start:declare (; 3 ;) (type $FUNCSIG$v) diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.untouched.wat index fd3e8343..29463588 100644 --- a/tests/compiler/declare.untouched.wat +++ b/tests/compiler/declare.untouched.wat @@ -7,7 +7,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index d2cd3a8e..a951a3ca 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00o\00.\00t\00s") + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s") (global $do/n (mut i32) (i32.const 10)) (global $do/m (mut i32) (i32.const 0)) (global $do/o (mut i32) (i32.const 0)) diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 71f240b0..90ae424b 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00o\00.\00t\00s\00") + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $do/n (mut i32) (i32.const 10)) diff --git a/tests/compiler/empty.json b/tests/compiler/empty.json index 8e2a32c1..8ee35e6e 100644 --- a/tests/compiler/empty.json +++ b/tests/compiler/empty.json @@ -1,5 +1,6 @@ { "asc_flags": [ - "--runtime half" + "--runtime half", + "--use ASC_RTRACE=1" ] } diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.optimized.wat index 8648d2d9..bb456a11 100644 --- a/tests/compiler/empty.optimized.wat +++ b/tests/compiler/empty.optimized.wat @@ -1,1632 +1,8 @@ (module - (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) "\01\00\00\00\01") - (data (i32.const 24) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 72) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 176) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 272) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") - (global $empty/a (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (memory $0 0) (export "memory" (memory $0)) - (export "foo" (func $empty/foo)) - (start $start) - (func $empty/foo (; 1 ;) (type $FUNCSIG$i) (result i32) - i32.const 24 - ) - (func $start (; 2 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 24 - global.set $empty/a - global.get $empty/a - local.tee $0 - i32.const 300 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/tlsf/removeBlock (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $2 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $3 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $2 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 3 - i32.and - local.get $2 - i32.or - local.tee $3 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $5 - end - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $2 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $7 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $3 - i32.store - local.get $2 - else - local.get $1 - end - local.set $1 - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 88 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $4 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $4 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $4 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.set $2 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $2 - i32.store offset=20 - local.get $2 - if - local.get $2 - local.get $1 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/freeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - i32.const 0 - i32.const 88 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/__typeinfo (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 272 - i32.load - i32.gt_u - if - i32.const 136 - i32.const 192 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 276 - i32.add - i32.load - ) - (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $3 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - br $continue|0 - end - end - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $continue|1 - end - end - end - loop $continue|2 - local.get $3 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $continue|3 - local.get $0 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - loop $continue|5 - local.get $3 - if - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - ) - (func $~lib/rt/pure/growRoots (; 8 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - local.tee $0 - i32.const 256 - local.get $0 - i32.const 256 - i32.gt_u - select - local.tee $3 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $2 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - global.set $~lib/rt/pure/ROOTS - local.get $0 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $0 - local.get $3 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 40 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 40 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - end - end - ) - (func $~lib/rt/pure/markGray (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__visit (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i32.const 300 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $0 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $1 - i32.const 1 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - block $tablify|0 - local.get $1 - i32.const 3 - i32.sub - br_table $case2|0 $case3|0 $case4|0 $tablify|0 - end - br $case5|0 - end - local.get $0 - call $~lib/rt/pure/decrement - br $break|0 - end - local.get $0 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 40 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/markGray - br $break|0 - end - local.get $0 - call $~lib/rt/pure/scan - br $break|0 - end - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 40 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.const 1879048192 - i32.and - if - local.get $0 - call $~lib/rt/pure/scanBlack - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/collectWhite - br $break|0 - end - i32.const 0 - i32.const 40 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/__visit_members (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$5 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$5 $switch$1$default - end - unreachable - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/tlsf/addMemory (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 18 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 304 - i32.const 0 - i32.store - i32.const 1872 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 304 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 304 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 304 - i32.const 1888 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 304 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 232 - i32.const 88 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 88 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $1 - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $null (; 25 ;) (type $FUNCSIG$v) + (func $null (; 0 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/empty.ts b/tests/compiler/empty.ts index d0dc7224..e69de29b 100644 --- a/tests/compiler/empty.ts +++ b/tests/compiler/empty.ts @@ -1,6 +0,0 @@ -export function foo(): string { - return ""; -} - -var a = foo(); -__release(changetype(a)); diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index b8dc7d72..29ee81b8 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -1,2206 +1,9 @@ (module - (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 24) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 72) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 176) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 272) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) - (global $empty/a (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/RTTI_BASE i32 (i32.const 272)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 300)) (export "memory" (memory $0)) - (export "foo" (func $empty/foo)) - (start $start) - (func $empty/foo (; 1 ;) (type $FUNCSIG$i) (result i32) - i32.const 24 - call $~lib/rt/pure/__retain - ) - (func $start:empty (; 2 ;) (type $FUNCSIG$v) - call $empty/foo - global.set $empty/a - global.get $empty/a - call $~lib/rt/pure/__release - ) - (func $start (; 3 ;) (type $FUNCSIG$v) - call $start:empty - ) - (func $~lib/rt/pure/increment (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 - i32.load - local.set $6 - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $3 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end - ) - (func $~lib/rt/tlsf/freeBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/__typeinfo (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/RTTI_BASE - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 136 - i32.const 192 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/memory/memory.copy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - end - else - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - end - ) - (func $~lib/rt/pure/growRoots (; 11 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 8 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/__release (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/markGray (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__visit (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - unreachable - end - unreachable - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/rt/__visit_members (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$case$5 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$5 $switch$1$default - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - ) - (func $~lib/rt/tlsf/addMemory (; 21 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 22 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 232 - i32.const 88 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $null (; 29 ;) (type $FUNCSIG$v) + (func $null (; 0 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 8b61e3de..5c590e34 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -2,14 +2,10 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (memory $0 0) (global $exports/Animal.CAT i32 (i32.const 0)) (global $exports/Animal.DOG i32 (i32.const 1)) (global $exports/animals.Animal.CAT i32 (i32.const 0)) @@ -17,11 +13,11 @@ (global $exports/Car.TIRES i32 (i32.const 4)) (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 17)) - (global $exports/vehicles.Car i32 (i32.const 18)) + (global $exports/Car i32 (i32.const 3)) + (global $exports/vehicles.Car i32 (i32.const 4)) (export "memory" (memory $0)) (export "add" (func $exports/add)) (export "$.setArgc" (func $~lib/setargc)) @@ -51,52 +47,42 @@ (export "vehicles.Car.getNumTires" (func $exports/Car.getNumTires)) (export "outer.inner.a" (global $exports/outer.inner.a)) (start $start) - (func $exports/add (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/add (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $exports/subOpt (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $exports/Car.getNumTires (; 3 ;) (type $FUNCSIG$i) (result i32) + (func $exports/Car.getNumTires (; 2 ;) (type $FUNCSIG$i) (result i32) i32.const 4 ) - (func $~lib/allocator/arena/__mem_allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset - local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select + (local $4 i32) + global.get $~lib/rt/stub/offset + i32.const 16 i32.add - i32.const 7 - i32.add - i32.const -8 - i32.and - local.tee $0 - current_memory local.tee $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.tee $1 + current_memory + local.tee $3 i32.const 16 i32.shl i32.gt_u if - local.get $2 - local.get $0 + local.get $3 local.get $1 + local.get $2 i32.sub i32.const 65535 i32.add @@ -104,16 +90,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 + local.tee $4 local.get $3 + local.get $4 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $4 grow_memory i32.const 0 i32.lt_s @@ -122,79 +108,41 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset local.get $1 - ) - (func $~lib/util/runtime/allocate (; 5 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 32 - call $~lib/allocator/arena/__mem_allocate - local.tee $0 - i32.const -1520547049 - i32.store - local.get $0 - i32.const 4 - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 64 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + global.set $~lib/rt/stub/offset + local.get $2 i32.const 16 i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + local.tee $1 + local.get $0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.store offset=12 local.get $2 - local.get $1 - i32.store - local.get $0 ) - (func $exports/Car#get:numDoors (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/Car#set:numDoors (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/Car#set:numDoors (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#openDoors (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/Car#openDoors (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $start (; 10 ;) (type $FUNCSIG$v) - i32.const 64 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + (func $start (; 7 ;) (type $FUNCSIG$v) + i32.const 16 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset ) - (func $null (; 11 ;) (type $FUNCSIG$v) + (func $null (; 8 ;) (type $FUNCSIG$v) nop ) - (func $exports/subOpt|trampoline (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt|trampoline (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -212,11 +160,11 @@ local.get $1 i32.sub ) - (func $~lib/setargc (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/setargc (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $~lib/argc ) - (func $exports/Car#constructor|trampoline (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -231,9 +179,8 @@ local.get $0 i32.eqz if - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -244,7 +191,7 @@ i32.store local.get $0 ) - (func $exports/vehicles.Car#constructor|trampoline (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor|trampoline (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -259,9 +206,8 @@ local.get $0 i32.eqz if - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 0559c3a6..c33c65f8 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -2,13 +2,10 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) (global $exports/Animal.CAT i32 (i32.const 0)) @@ -18,15 +15,12 @@ (global $exports/Car.TIRES i32 (i32.const 4)) (global $exports/vehicles.Car.TIRES i32 (i32.const 4)) (global $exports/outer.inner.a i32 (i32.const 42)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 64)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 8)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $exports/Car i32 (i32.const 17)) - (global $exports/vehicles.Car i32 (i32.const 18)) + (global $exports/Car i32 (i32.const 3)) + (global $exports/vehicles.Car i32 (i32.const 4)) (export "memory" (memory $0)) (export "add" (func $exports/add)) (export "$.setArgc" (func $~lib/setargc)) @@ -56,78 +50,69 @@ (export "vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires)) (export "outer.inner.a" (global $exports/outer.inner.a)) (start $start) - (func $exports/add (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/add (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $exports/subOpt (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $exports/math.sub (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/math.sub (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $exports/Car.getNumTires (; 4 ;) (type $FUNCSIG$i) (result i32) + (func $exports/Car.getNumTires (; 3 ;) (type $FUNCSIG$i) (result i32) global.get $exports/Car.TIRES ) - (func $~lib/util/runtime/adjust (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -137,22 +122,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -161,76 +146,32 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $exports/Car#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -242,30 +183,30 @@ i32.store local.get $0 ) - (func $exports/Car#get:numDoors (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/Car#set:numDoors (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/Car#set:numDoors (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#openDoors (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/Car#openDoors (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $exports/vehicles.Car.getNumTires (; 14 ;) (type $FUNCSIG$i) (result i32) + (func $exports/vehicles.Car.getNumTires (; 10 ;) (type $FUNCSIG$i) (result i32) global.get $exports/vehicles.Car.TIRES ) - (func $exports/vehicles.Car#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 4 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -277,33 +218,33 @@ i32.store local.get $0 ) - (func $exports/vehicles.Car#get:numDoors (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $exports/vehicles.Car#get:numDoors (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $exports/vehicles.Car#set:numDoors (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $exports/vehicles.Car#set:numDoors (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#openDoors (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $exports/vehicles.Car#openDoors (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $start (; 19 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (func $start (; 15 ;) (type $FUNCSIG$v) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset ) - (func $null (; 20 ;) (type $FUNCSIG$v) + (func $null (; 16 ;) (type $FUNCSIG$v) ) - (func $exports/subOpt|trampoline (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/subOpt|trampoline (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -321,20 +262,20 @@ local.get $1 call $exports/subOpt ) - (func $~lib/setargc (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/setargc (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.set $~lib/argc ) - (func $Car#get:doors (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $Car#get:doors (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $Car#set:doors (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $Car#set:doors (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#constructor|trampoline (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -350,16 +291,16 @@ local.get $1 call $exports/Car#constructor ) - (func $vehicles.Car#get:doors (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $vehicles.Car#get:doors (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $vehicles.Car#set:doors (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $vehicles.Car#set:doors (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#constructor|trampoline (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor|trampoline (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index ef845db0..b3875d78 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -3,8 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\0c") - (data (i32.const 24) "f\00o\00r\00.\00t\00s") + (data (i32.const 8) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") (global $for/i (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) @@ -89,9 +88,8 @@ global.get $for/i i32.const 1 i32.sub - local.tee $0 global.set $for/i - local.get $0 + global.get $for/i br_if $repeat|4 end i32.const 0 diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 44747e30..11e16036 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00.\00t\00s\00") + (data (i32.const 8) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $for/i (mut i32) (i32.const 0)) @@ -23,7 +23,6 @@ i32.lt_s i32.eqz br_if $break|0 - nop global.get $for/i i32.const 1 i32.add @@ -54,7 +53,6 @@ i32.lt_s i32.eqz br_if $break|1 - nop local.get $0 i32.const 1 i32.add @@ -122,9 +120,8 @@ global.get $for/i i32.const 1 i32.sub - local.tee $1 global.set $for/i - local.get $1 + global.get $for/i end i32.const 0 i32.eq @@ -138,26 +135,26 @@ end block $break|5 i32.const 0 - local.set $2 + local.set $1 loop $repeat|5 block $continue|5 - local.get $2 + local.get $1 i32.const 10 i32.lt_s i32.eqz br_if $break|5 br $continue|5 end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $repeat|5 unreachable end unreachable end - local.get $2 + local.get $1 i32.const 10 i32.eq i32.eqz @@ -171,9 +168,9 @@ end block $break|6 i32.const 0 - local.set $1 + local.set $2 loop $repeat|6 - local.get $1 + local.get $2 i32.const 10 i32.lt_s i32.eqz @@ -188,7 +185,7 @@ i32.lt_s i32.eqz br_if $break|7 - local.get $1 + local.get $2 local.get $3 i32.eq if @@ -204,10 +201,10 @@ end unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $repeat|6 unreachable end diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 3d0d23d1..d59e56f2 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -6,15 +6,14 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00,") - (data (i32.const 24) "f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data (i32.const 8) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") (table $0 11 funcref) (elem (i32.const 0) $start:function-expression~someName $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5) - (global $function-expression/f1 (mut i32) (i32.const 1)) + (global $function-expression/f1 i32 (i32.const 1)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $function-expression/f2 (mut i32) (i32.const 2)) - (global $function-expression/f3 (mut i32) (i32.const 3)) - (global $function-expression/f4 (mut i32) (i32.const 4)) + (global $function-expression/f2 i32 (i32.const 2)) + (global $function-expression/f3 i32 (i32.const 3)) + (global $function-expression/f4 i32 (i32.const 4)) (export "memory" (memory $0)) (start $start) (func $start:function-expression~anonymous|0 (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index 7bd630c3..c5751357 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -6,7 +6,7 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00,\00\00\00\00\00\00\00\00\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 8) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") (table $0 11 funcref) (elem (i32.const 0) $null $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0) (global $function-expression/f1 (mut i32) (i32.const 1)) diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index a2d57005..c0bef0ca 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -6,8 +6,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\"") - (data (i32.const 24) "f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data (i32.const 8) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") (table $0 5 funcref) (elem (i32.const 0) $null $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0) (global $function-types/i32Adder (mut i32) (i32.const 0)) diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index fb90ab7a..a02dbe06 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -8,7 +8,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") + (data (i32.const 8) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00") (table $0 5 funcref) (elem (i32.const 0) $null $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/addI32) (global $function-types/i32Adder (mut i32) (i32.const 0)) diff --git a/tests/compiler/function.untouched.wat b/tests/compiler/function.untouched.wat index c06f81da..1e51a1fe 100644 --- a/tests/compiler/function.untouched.wat +++ b/tests/compiler/function.untouched.wat @@ -23,7 +23,7 @@ nop ) (func $function/v (; 1 ;) (type $FUNCSIG$v) - nop + return ) (func $function/i (; 2 ;) (type $FUNCSIG$i) (result i32) i32.const 0 @@ -41,7 +41,7 @@ nop ) (func $function/iv (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - nop + return ) (func $function/ii (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -59,7 +59,7 @@ nop ) (func $function/iiv (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop + return ) (func $function/iii (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index aa1c104a..7fe2ea87 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1,42 +1,27 @@ (module (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (memory $0 0) (table $0 2 funcref) (elem (i32.const 0) $null $getter-call/C#get:x~anonymous|0) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select + i32.const 16 i32.add - i32.const 7 - i32.add - i32.const -8 + i32.const -16 i32.and local.tee $0 current_memory @@ -74,71 +59,35 @@ end end local.get $0 - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/offset local.get $1 - ) - (func $~lib/util/runtime/register (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 64 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 i32.const 16 i32.sub - local.tee $1 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 17 - i32.store - local.get $0 - ) - (func $getter-call/C#get:x~anonymous|0 (; 3 ;) (type $FUNCSIG$i) (result i32) - i32.const 42 - ) - (func $getter-call/test (; 4 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 16 - call $~lib/allocator/arena/__mem_allocate local.tee $0 - i32.const -1520547049 - i32.store + i32.const 3 + i32.store offset=8 local.get $0 i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - call $~lib/util/runtime/register + i32.store offset=12 + local.get $1 + ) + (func $getter-call/C#get:x~anonymous|0 (; 1 ;) (type $FUNCSIG$i) (result i32) + i32.const 42 + ) + (func $getter-call/test (; 2 ;) (type $FUNCSIG$i) (result i32) + call $~lib/rt/stub/__alloc drop i32.const 0 global.set $~lib/argc call $getter-call/C#get:x~anonymous|0 ) - (func $start (; 5 ;) (type $FUNCSIG$v) - i32.const 64 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + (func $start (; 3 ;) (type $FUNCSIG$v) + i32.const 16 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset ) - (func $null (; 6 ;) (type $FUNCSIG$v) + (func $null (; 4 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 9870e0b2..d95df651 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -1,78 +1,64 @@ (module (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (memory $0 0) (table $0 2 funcref) (elem (i32.const 0) $null $getter-call/C#get:x~anonymous|0) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 64)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 8)) (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -82,22 +68,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -106,108 +92,74 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $getter-call/C#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $getter-call/C#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) - (func $getter-call/C#get:x~anonymous|0 (; 7 ;) (type $FUNCSIG$i) (result i32) + (func $getter-call/C#get:x~anonymous|0 (; 3 ;) (type $FUNCSIG$i) (result i32) i32.const 42 ) - (func $getter-call/C#get:x (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $getter-call/C#get:x (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 ) - (func $getter-call/test (; 9 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/rt/stub/__release (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $getter-call/test (; 6 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) + (local $1 i32) i32.const 0 call $getter-call/C#constructor local.set $0 - i32.const 0 - global.set $~lib/argc + block (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + call $getter-call/C#get:x + call_indirect (type $FUNCSIG$i) + end + local.set $1 local.get $0 - call $getter-call/C#get:x - call_indirect (type $FUNCSIG$i) + call $~lib/rt/stub/__release + local.get $1 ) - (func $start (; 10 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (func $start (; 7 ;) (type $FUNCSIG$v) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset ) - (func $null (; 11 ;) (type $FUNCSIG$v) + (func $null (; 8 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.optimized.wat index 913fab81..d966cb48 100644 --- a/tests/compiler/getter-setter.optimized.wat +++ b/tests/compiler/getter-setter.optimized.wat @@ -3,8 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00 ") - (data (i32.const 24) "g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat index f72e11e2..e6322ce2 100644 --- a/tests/compiler/getter-setter.untouched.wat +++ b/tests/compiler/getter-setter.untouched.wat @@ -5,7 +5,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00 \00\00\00\00\00\00\00\00\00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat index d2091eb4..1bd96e7f 100644 --- a/tests/compiler/if.optimized.wat +++ b/tests/compiler/if.optimized.wat @@ -4,8 +4,8 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\n") - (data (i32.const 24) "i\00f\00.\00t\00s") + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s") + (data (i32.const 40) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") (export "memory" (memory $0)) (export "ifThenElse" (func $if/ifThenElse)) (export "ifThen" (func $if/ifThen)) @@ -30,7 +30,7 @@ if (result i32) i32.const 1 else - i32.const 0 + i32.const 56 i32.const 24 i32.const 37 i32.const 4 diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat index 38af3f87..b89e81e9 100644 --- a/tests/compiler/if.untouched.wat +++ b/tests/compiler/if.untouched.wat @@ -4,7 +4,8 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00i\00f\00.\00t\00s\00") + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\00") + (data (i32.const 40) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) @@ -131,7 +132,7 @@ i32.const 1 return else - i32.const 0 + i32.const 56 i32.const 24 i32.const 37 i32.const 4 diff --git a/tests/compiler/infer-type.optimized.wat b/tests/compiler/infer-type.optimized.wat index 73fe1d56..e299ad1a 100644 --- a/tests/compiler/infer-type.optimized.wat +++ b/tests/compiler/infer-type.optimized.wat @@ -1,8 +1,7 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a") - (data (i32.const 24) "i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s") (global $infer-type/ri (mut i32) (i32.const 0)) (global $infer-type/rI (mut i64) (i64.const 0)) (global $infer-type/rf (mut f32) (f32.const 0)) diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index d5bed29c..66b69e7e 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -7,7 +7,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s\00") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00f\00e\00r\00-\00t\00y\00p\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $infer-type/i i32 (i32.const 10)) @@ -92,7 +92,6 @@ i32.lt_s i32.eqz br_if $break|0 - nop local.get $0 i32.const 1 i32.add diff --git a/tests/compiler/inlining-blocklocals.optimized.wat b/tests/compiler/inlining-blocklocals.optimized.wat index 2720b80d..3f0d0872 100644 --- a/tests/compiler/inlining-blocklocals.optimized.wat +++ b/tests/compiler/inlining-blocklocals.optimized.wat @@ -3,8 +3,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00.") - (data (i32.const 24) "i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data (i32.const 8) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.untouched.wat index 4c352598..0f928507 100644 --- a/tests/compiler/inlining-blocklocals.untouched.wat +++ b/tests/compiler/inlining-blocklocals.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00.\00\00\00\00\00\00\00\00\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (data (i32.const 8) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $inlining-blocklocals/b (mut i32) (i32.const 2)) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 3d3c6a99..1d7d8513 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -6,15 +6,12 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16") - (data (i32.const 24) "i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") - (data (i32.const 48) "\10\00\00\00(") - (data (i32.const 64) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") (table $0 2 funcref) (elem (i32.const 0) $null $inlining/func_fe~anonymous|0) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "test" (func $inlining/test)) (start $start) @@ -40,18 +37,21 @@ unreachable end ) - (func $~lib/allocator/arena/__mem_allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -59,20 +59,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -80,16 +80,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -98,77 +98,30 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 104 - i32.le_u - if - i32.const 0 - i32.const 64 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 i32.const 16 i32.sub local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 64 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 - i32.store + i32.store offset=8 + local.get $2 local.get $0 + i32.store offset=12 + local.get $3 ) - (func $inlining/test_ctor (; 7 ;) (type $FUNCSIG$v) + (func $inlining/test_ctor (; 5 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 16 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc local.tee $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -238,15 +191,15 @@ unreachable end ) - (func $start (; 8 ;) (type $FUNCSIG$v) + (func $start (; 6 ;) (type $FUNCSIG$v) call $inlining/test_funcs - i32.const 104 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 48 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset call $inlining/test_ctor ) - (func $null (; 9 ;) (type $FUNCSIG$v) + (func $null (; 7 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index b6b2b2e3..0013b85e 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -3,21 +3,18 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 48) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00") (table $0 2 funcref) (elem (i32.const 0) $null $inlining/func_fe~anonymous|0) (global $inlining/constantGlobal i32 (i32.const 1)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 104)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 48)) (export "memory" (memory $0)) (export "test" (func $inlining/test)) (start $start) @@ -29,7 +26,13 @@ (func $inlining/func_fe~anonymous|0 (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $inlining/test_funcs (; 3 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $inlining/test_funcs (; 5 ;) (type $FUNCSIG$v) (local $0 f32) (local $1 f64) (local $2 i32) @@ -261,6 +264,7 @@ unreachable end i32.const 123 + call $~lib/rt/stub/__retain local.set $7 block $inlining/Foo#method_this|inlined.0 (result i32) local.get $7 @@ -270,7 +274,9 @@ i32.const 3 local.set $2 local.get $4 + call $~lib/rt/stub/__retain end + local.tee $2 i32.const 123 i32.eq i32.eqz @@ -282,61 +288,56 @@ call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release ) - (func $~lib/util/runtime/adjust (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -346,22 +347,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -370,68 +371,21 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 local.get $0 + i32.store offset=12 + local.get $2 ) - (func $inlining/test_ctor (; 9 ;) (type $FUNCSIG$v) + (func $inlining/test_ctor (; 7 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -448,9 +402,9 @@ local.get $1 else i32.const 16 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end local.set $3 i32.const 2 @@ -460,9 +414,9 @@ i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $3 end local.get $3 @@ -477,6 +431,7 @@ i32.store offset=4 local.get $3 end + local.tee $2 local.set $1 local.get $1 i32.const 3 @@ -489,6 +444,8 @@ i32.store offset=12 local.get $1 end + local.tee $2 + call $~lib/rt/stub/__retain local.set $4 local.get $4 i32.load @@ -542,8 +499,12 @@ call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release ) - (func $start:inlining (; 10 ;) (type $FUNCSIG$v) + (func $start:inlining (; 8 ;) (type $FUNCSIG$v) call $inlining/test i32.const 3 i32.eq @@ -557,21 +518,21 @@ unreachable end call $inlining/test_funcs - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset call $inlining/test_ctor ) - (func $start (; 11 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) call $start:inlining ) - (func $null (; 12 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index 58056cd0..ea52f479 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -3,8 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a") - (data (i32.const 24) "i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data (i32.const 8) "\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 $instanceof/an (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 964e5f12..aba9a8f7 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -2,10 +2,11 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$id (func (param f64) (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 8) "\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) (elem (i32.const 0) $null) (global $instanceof/a (mut i32) (i32.const 0)) @@ -81,7 +82,10 @@ unreachable unreachable ) - (func $start:instanceof (; 5 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__retainRelease (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $start:instanceof (; 6 ;) (type $FUNCSIG$v) block (result i32) global.get $instanceof/a drop @@ -674,7 +678,9 @@ call $~lib/builtins/abort unreachable end + global.get $instanceof/an i32.const 1 + call $~lib/rt/stub/__retainRelease global.set $instanceof/an global.get $instanceof/an i32.const 0 @@ -703,9 +709,9 @@ unreachable end ) - (func $start (; 6 ;) (type $FUNCSIG$v) + (func $start (; 7 ;) (type $FUNCSIG$v) call $start:instanceof ) - (func $null (; 7 ;) (type $FUNCSIG$v) + (func $null (; 8 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index f6f188bf..ef1c6385 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -3,8 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\14") - (data (i32.const 24) "l\00o\00g\00i\00c\00a\00l\00.\00t\00s") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") (global $logical/i (mut i32) (i32.const 0)) (global $logical/I (mut i64) (i64.const 0)) (global $logical/f (mut f32) (f32.const 0)) diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index 0433ecb6..e4115bc6 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $logical/i (mut i32) (i32.const 0)) diff --git a/tests/compiler/mandelbrot.untouched.wat b/tests/compiler/mandelbrot.untouched.wat index 5222f085..0b686f89 100644 --- a/tests/compiler/mandelbrot.untouched.wat +++ b/tests/compiler/mandelbrot.untouched.wat @@ -555,159 +555,153 @@ i32.lt_u i32.eqz br_if $break|0 - block - local.get $12 - f64.convert_i32_u - local.get $6 - f64.mul - local.get $8 - f64.sub - local.set $13 - f64.const 0 - local.set $14 - f64.const 0 - local.set $15 - i32.const 0 - local.set $18 - block $break|1 - loop $continue|1 - local.get $14 - local.get $14 - f64.mul - local.tee $16 - local.get $15 - local.get $15 - f64.mul - local.tee $17 - f64.add - f64.const 4 - f64.le - if - block - f64.const 2 - local.get $14 - f64.mul - local.get $15 - f64.mul - local.get $7 - f64.add - local.set $15 - local.get $16 - local.get $17 - f64.sub - local.get $13 - f64.add - local.set $14 - local.get $18 - local.get $3 - i32.ge_u - if - br $break|1 - end - local.get $18 - i32.const 1 - i32.add - local.set $18 - end - br $continue|1 - end - end - end - block $break|2 - loop $continue|2 - local.get $18 - f64.convert_i32_u - local.get $11 - f64.lt - if - block - local.get $14 - local.get $14 - f64.mul - local.get $15 - local.get $15 - f64.mul - f64.sub - local.get $13 - f64.add - local.set $19 - f64.const 2 - local.get $14 - f64.mul - local.get $15 - f64.mul - local.get $7 - f64.add - local.set $15 - local.get $19 - local.set $14 - local.get $18 - i32.const 1 - i32.add - local.set $18 - end - br $continue|2 - end - end - end - global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS - i32.const 1 - i32.sub - local.set $20 - local.get $14 - local.get $14 - f64.mul - local.get $15 - local.get $15 - f64.mul - f64.add - local.set $19 - local.get $19 - f64.const 1 - f64.gt - if - f64.const 0.5 - local.get $19 - call $~lib/math/NativeMath.log + local.get $12 + f64.convert_i32_u + local.get $6 + f64.mul + local.get $8 + f64.sub + local.set $13 + f64.const 0 + local.set $14 + f64.const 0 + local.set $15 + i32.const 0 + local.set $18 + block $break|1 + loop $continue|1 + local.get $14 + local.get $14 f64.mul - call $~lib/math/NativeMath.log2 - local.set $21 - global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS - i32.const 1 - i32.sub - f64.convert_i32_s - block $../../examples/mandelbrot/assembly/index/clamp|inlined.0 (result f64) + local.tee $16 + local.get $15 + local.get $15 + f64.mul + local.tee $17 + f64.add + f64.const 4 + f64.le + if + f64.const 2 + local.get $14 + f64.mul + local.get $15 + f64.mul + local.get $7 + f64.add + local.set $15 + local.get $16 + local.get $17 + f64.sub + local.get $13 + f64.add + local.set $14 + local.get $18 + local.get $3 + i32.ge_u + if + br $break|1 + end local.get $18 i32.const 1 i32.add - f64.convert_i32_u - local.get $21 - f64.sub - local.get $10 - f64.mul - local.set $24 - f64.const 0 - local.set $23 - f64.const 1 - local.set $22 - local.get $24 - local.get $23 - f64.max - local.get $22 - f64.min + local.set $18 + br $continue|1 end - f64.mul - i32.trunc_f64_u - local.set $20 end - local.get $9 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $20 - i32.store16 end + block $break|2 + loop $continue|2 + local.get $18 + f64.convert_i32_u + local.get $11 + f64.lt + if + local.get $14 + local.get $14 + f64.mul + local.get $15 + local.get $15 + f64.mul + f64.sub + local.get $13 + f64.add + local.set $19 + f64.const 2 + local.get $14 + f64.mul + local.get $15 + f64.mul + local.get $7 + f64.add + local.set $15 + local.get $19 + local.set $14 + local.get $18 + i32.const 1 + i32.add + local.set $18 + br $continue|2 + end + end + end + global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS + i32.const 1 + i32.sub + local.set $20 + local.get $14 + local.get $14 + f64.mul + local.get $15 + local.get $15 + f64.mul + f64.add + local.set $19 + local.get $19 + f64.const 1 + f64.gt + if + f64.const 0.5 + local.get $19 + call $~lib/math/NativeMath.log + f64.mul + call $~lib/math/NativeMath.log2 + local.set $21 + global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS + i32.const 1 + i32.sub + f64.convert_i32_s + block $../../examples/mandelbrot/assembly/index/clamp|inlined.0 (result f64) + local.get $18 + i32.const 1 + i32.add + f64.convert_i32_u + local.get $21 + f64.sub + local.get $10 + f64.mul + local.set $24 + f64.const 0 + local.set $23 + f64.const 1 + local.set $22 + local.get $24 + local.get $23 + f64.max + local.get $22 + f64.min + end + f64.mul + i32.trunc_f64_u + local.set $20 + end + local.get $9 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $20 + i32.store16 local.get $12 i32.const 1 i32.add diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat index 53e206bd..e95c8949 100644 --- a/tests/compiler/many-locals.optimized.wat +++ b/tests/compiler/many-locals.optimized.wat @@ -2,8 +2,7 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1c") - (data (i32.const 24) "m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") (export "memory" (memory $0)) (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index 7229e767..89dbe394 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index 4abc28ce..e6b913ca 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -4,8 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\12") - (data (i32.const 24) "m\00e\00m\00c\00p\00y\00.\00t\00s") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") (global $memcpy/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "memcpy" (func $memcpy/memcpy)) diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index 5e7661bb..8c39b266 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $memcpy/base i32 (i32.const 8)) @@ -30,30 +30,28 @@ i32.const 0 end if - block - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $0 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $0 + local.get $6 end + block (result i32) + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 br $continue|0 end end @@ -70,48 +68,46 @@ i32.const 16 i32.ge_u if - block - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - end + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $continue|1 end end @@ -294,82 +290,80 @@ i32.const 17 i32.ge_u if - block - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 24 - i32.shr_u - local.get $5 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $5 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - end + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $5 + local.get $0 + local.get $4 + i32.const 24 + i32.shr_u + local.get $5 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 4 + i32.add + local.get $5 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $5 + local.get $0 + i32.const 8 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $5 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 12 + i32.add + local.get $5 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $continue|3 end end @@ -425,82 +419,80 @@ i32.const 18 i32.ge_u if - block - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 16 - i32.shr_u - local.get $5 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $5 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - end + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $5 + local.get $0 + local.get $4 + i32.const 16 + i32.shr_u + local.get $5 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 4 + i32.add + local.get $5 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $5 + local.get $0 + i32.const 8 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $5 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 12 + i32.add + local.get $5 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $continue|4 end end @@ -538,82 +530,80 @@ i32.const 19 i32.ge_u if - block - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 8 - i32.shr_u - local.get $5 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $5 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - end + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $5 + local.get $0 + local.get $4 + i32.const 8 + i32.shr_u + local.get $5 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 4 + i32.add + local.get $5 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $5 + local.get $0 + i32.const 8 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $5 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 12 + i32.add + local.get $5 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 br $continue|5 end end diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 0c411976..151315b5 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -4,8 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\14") - (data (i32.const 24) "m\00e\00m\00m\00o\00v\00e\00.\00t\00s") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") (global $memmove/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index 0b35b390..8b820dde 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $memmove/base i32 (i32.const 8)) @@ -41,74 +41,16 @@ i32.const 8 i32.rem_u if - block - local.get $2 - i32.eqz - if - local.get $3 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $4 - i32.const 1 - i32.add - local.set $0 - local.get $4 - end - block (result i32) - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $4 - end - i32.load8_u - i32.store8 + local.get $2 + i32.eqz + if + local.get $3 + return end - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $2 - i32.const 8 - i32.ge_u - if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $2 - if - block + local.get $2 + i32.const 1 + i32.sub + local.set $2 block (result i32) local.get $0 local.tee $4 @@ -127,11 +69,63 @@ end i32.load8_u i32.store8 + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store local.get $2 - i32.const 1 + i32.const 8 i32.sub local.set $2 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 end + end + end + end + block $break|2 + loop $continue|2 + local.get $2 + if + block (result i32) + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + end + block (result i32) + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $4 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 br $continue|2 end end @@ -153,25 +147,23 @@ i32.const 8 i32.rem_u if - block - local.get $2 - i32.eqz - if - local.get $3 - return - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $2 + i32.eqz + if + local.get $3 + return end + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end @@ -182,20 +174,18 @@ i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $2 + i32.const 8 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store br $continue|4 end end diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index 44cf5295..b40c3e01 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -4,8 +4,7 @@ (type $FUNCSIG$viii (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\12") - (data (i32.const 24) "m\00e\00m\00s\00e\00t\00.\00t\00s") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") (global $memset/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index 1423ed49..397e63c0 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -4,11 +4,11 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $memset/dest (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 44)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 44)) (export "memory" (memory $0)) (start $start) (func $memset/memset (; 1 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -241,34 +241,32 @@ i32.const 32 i32.ge_u if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end + local.get $0 + local.get $6 + i64.store + local.get $0 + i32.const 8 + i32.add + local.get $6 + i64.store + local.get $0 + i32.const 16 + i32.add + local.get $6 + i64.store + local.get $0 + i32.const 24 + i32.add + local.get $6 + i64.store + local.get $2 + i32.const 32 + i32.sub + local.set $2 + local.get $0 + i32.const 32 + i32.add + local.set $0 br $continue|0 end end @@ -276,7 +274,7 @@ local.get $3 ) (func $start:memset (; 2 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE + global.get $~lib/heap/HEAP_BASE global.set $memset/dest global.get $memset/dest i32.const 1 diff --git a/tests/compiler/new-without-allocator.json b/tests/compiler/new-without-allocator.json deleted file mode 100644 index b1da366f..00000000 --- a/tests/compiler/new-without-allocator.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} \ No newline at end of file diff --git a/tests/compiler/new-without-allocator.optimized.wat b/tests/compiler/new-without-allocator.optimized.wat deleted file mode 100644 index c5a555fc..00000000 --- a/tests/compiler/new-without-allocator.optimized.wat +++ /dev/null @@ -1,17 +0,0 @@ -(module - (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$v (func)) - (memory $0 1) - (data (i32.const 8) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (table $0 1 funcref) - (elem (i32.const 0) $null) - (export "memory" (memory $0)) - (export "table" (table $0)) - (export "test" (func $new-without-allocator/test)) - (func $new-without-allocator/test (; 0 ;) (type $FUNCSIG$i) (result i32) - unreachable - ) - (func $null (; 1 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/tests/compiler/new-without-allocator.ts b/tests/compiler/new-without-allocator.ts deleted file mode 100644 index a50aeb61..00000000 --- a/tests/compiler/new-without-allocator.ts +++ /dev/null @@ -1,7 +0,0 @@ -class A {} - -export function test(): i32 { - var a = new A(); - return 3; -} -// Expect error: AS214 diff --git a/tests/compiler/new-without-allocator.untouched.wat b/tests/compiler/new-without-allocator.untouched.wat deleted file mode 100644 index e69de29b..00000000 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 7f86977f..ff179f24 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -8,56 +8,33 @@ (type $FUNCSIG$iijijij (func (param i32 i64 i32 i64 i32 i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\02") - (data (i32.const 24) "0") - (data (i32.const 32) "\0f\00\00\00\90\01") - (data (i32.const 48) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 448) "\11\00\00\00\10") - (data (i32.const 464) "0\00\00\000\00\00\00\90\01\00\00d") - (data (i32.const 480) "\10\00\00\00\02") - (data (i32.const 496) "1") - (data (i32.const 504) "\10\00\00\00\12") - (data (i32.const 520) "n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 544) "\10\00\00\00\06") - (data (i32.const 560) "0\00.\000") - (data (i32.const 568) "\10\00\00\00\06") - (data (i32.const 584) "N\00a\00N") - (data (i32.const 592) "\10\00\00\00\12") - (data (i32.const 608) "-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 632) "\10\00\00\00\10") - (data (i32.const 648) "I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 664) "\0f\00\00\00\b8\02") - (data (i32.const 680) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/itoa (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 - local.tee $1 - call $~lib/rt/index-stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/index-stub/__release - local.get $2 return ) + (func $~lib/rt/stub/__release (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) (func $~lib/number/I32#toString (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 call $~lib/util/number/itoa local.tee $1 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain local.set $2 local.get $1 - call $~lib/rt/index-stub/__release + call $~lib/rt/stub/__release local.get $2 ) (func $~lib/string/String#get:length (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -463,11 +455,12 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain drop local.get $2 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain drop i32.const 0 local.set $5 @@ -514,29 +507,34 @@ end end end - local.get $0 - call $~lib/rt/index-stub/__release - local.get $2 - call $~lib/rt/index-stub/__release local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 ) (func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $0 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain drop local.get $1 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain drop local.get $0 local.get $1 i32.eq if - local.get $0 - call $~lib/rt/index-stub/__release - local.get $1 - call $~lib/rt/index-stub/__release 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 @@ -550,39 +548,45 @@ i32.eq end if - local.get $0 - call $~lib/rt/index-stub/__release - local.get $1 - call $~lib/rt/index-stub/__release 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 $2 - local.get $2 + local.set $3 + local.get $3 local.get $1 call $~lib/string/String#get:length i32.ne if - local.get $0 - call $~lib/rt/index-stub/__release - local.get $1 - call $~lib/rt/index-stub/__release 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/rt/index-stub/__release - local.get $1 - call $~lib/rt/index-stub/__release - local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 + local.get $3 call $~lib/util/string/compareImpl i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) (func $~lib/builtins/isFinite (; 12 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 @@ -1174,55 +1178,62 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz if br $~lib/util/memory/memmove|inlined.0 end - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 block (result i32) - local.get $0 - local.tee $5 + local.get $5 + local.tee $6 i32.const 1 i32.add - local.set $0 - local.get $5 + local.set $5 + local.get $6 end block (result i32) - local.get $1 - local.tee $5 + local.get $4 + local.tee $6 i32.const 1 i32.add - local.set $1 - local.get $5 + local.set $4 + local.get $6 end i32.load8_u i32.store8 @@ -1232,26 +1243,26 @@ end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $0 - local.get $1 + local.get $5 + local.get $4 i64.load i64.store - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 - local.get $0 + local.set $3 + local.get $5 i32.const 8 i32.add - local.set $0 - local.get $1 + local.set $5 + local.get $4 i32.const 8 i32.add - local.set $1 + local.set $4 br $continue|1 end end @@ -1259,64 +1270,64 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if block (result i32) - local.get $0 - local.tee $5 + local.get $5 + local.tee $6 i32.const 1 i32.add - local.set $0 - local.get $5 + local.set $5 + local.get $6 end block (result i32) - local.get $1 - local.tee $5 + local.get $4 + local.tee $6 i32.const 1 i32.add - local.set $1 - local.get $5 + local.set $4 + local.get $6 end i32.load8_u i32.store8 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -1326,19 +1337,19 @@ end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 - local.get $0 - local.get $2 + local.set $3 + local.get $5 + local.get $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i64.load i64.store @@ -1349,16 +1360,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -2223,7 +2234,7 @@ i32.eqz if i32.const 1784 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain return end local.get $8 @@ -2240,12 +2251,12 @@ end if local.get $0 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain return end local.get $3 - i32.const 16 - call $~lib/rt/index-stub/__alloc + i32.const 1 + call $~lib/rt/stub/__alloc local.set $10 local.get $10 local.get $0 @@ -2254,19 +2265,21 @@ local.get $3 call $~lib/memory/memory.copy local.get $10 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain ) - (func $~lib/util/number/dtoa (; 21 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/rt/stub/__free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/util/number/dtoa (; 22 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 f64.const 0 f64.eq if i32.const 560 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain return end local.get $0 @@ -2277,7 +2290,7 @@ call $~lib/builtins/isNaN if i32.const 584 - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain return end i32.const 608 @@ -2286,14 +2299,14 @@ f64.const 0 f64.lt select - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain return end i32.const 28 i32.const 1 i32.shl - i32.const 16 - call $~lib/rt/index-stub/__alloc + i32.const 1 + call $~lib/rt/stub/__alloc local.set $1 local.get $1 local.get $0 @@ -2301,50 +2314,46 @@ local.set $2 local.get $2 i32.const 28 - i32.lt_s + i32.eq if local.get $1 - i32.const 0 - local.get $2 - call $~lib/string/String#substring - local.tee $3 - call $~lib/rt/index-stub/__retain - local.set $4 - local.get $3 - call $~lib/rt/index-stub/__release - local.get $4 + call $~lib/rt/stub/__retain return end local.get $1 - call $~lib/rt/index-stub/__retain + i32.const 0 + local.get $2 + call $~lib/string/String#substring + local.set $3 + local.get $1 + call $~lib/rt/stub/__free + local.get $3 ) - (func $~lib/number/F64#toString (; 22 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64#toString (; 23 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + local.get $0 + call $~lib/util/number/dtoa + ) + (func $~lib/number/Bool#toString (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/util/number/dtoa - local.tee $1 - call $~lib/rt/index-stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/index-stub/__release - local.get $2 - ) - (func $~lib/number/Bool#toString (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) i32.const 1920 + call $~lib/rt/stub/__retain + local.tee $1 else i32.const 1944 + call $~lib/rt/stub/__retain + local.tee $2 end - call $~lib/rt/index-stub/__retain + call $~lib/rt/stub/__retain ) - (func $~lib/builtins/isNaN (; 24 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 25 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/number/F32.isSafeInteger (; 25 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isSafeInteger (; 26 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 f32.abs global.get $~lib/builtins/f32.MAX_SAFE_INTEGER @@ -2358,14 +2367,14 @@ i32.const 0 end ) - (func $~lib/builtins/isFinite (; 26 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isFinite (; 27 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.sub f32.const 0 f32.eq ) - (func $~lib/number/F32.isInteger (; 27 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/number/F32.isInteger (; 28 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 call $~lib/builtins/isFinite if (result i32) @@ -2377,7 +2386,7 @@ i32.const 0 end ) - (func $~lib/number/F64.isSafeInteger (; 28 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isSafeInteger (; 29 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 f64.abs global.get $~lib/builtins/f64.MAX_SAFE_INTEGER @@ -2391,7 +2400,7 @@ i32.const 0 end ) - (func $~lib/number/F64.isInteger (; 29 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/number/F64.isInteger (; 30 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 call $~lib/builtins/isFinite if (result i32) @@ -2403,7 +2412,7 @@ i32.const 0 end ) - (func $start:number (; 30 ;) (type $FUNCSIG$v) + (func $start:number (; 31 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2415,30 +2424,19 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - global.get $~lib/builtins/HEAP_BASE + 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/index-stub/startOffset - global.get $~lib/rt/index-stub/startOffset - global.set $~lib/rt/index-stub/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset global.get $number/a call $~lib/number/I32#toString - local.tee $1 + local.tee $0 i32.const 496 call $~lib/string/String.__eq i32.eqz @@ -2452,7 +2450,7 @@ end f64.const 2 call $~lib/number/F64#toString - local.tee $3 + local.tee $1 i32.const 1800 call $~lib/string/String.__eq i32.eqz @@ -2466,7 +2464,7 @@ end i32.const 3 call $~lib/number/I32#toString - local.tee $5 + local.tee $2 i32.const 1824 call $~lib/string/String.__eq i32.eqz @@ -2480,7 +2478,7 @@ end i32.const -5 call $~lib/number/I32#toString - local.tee $7 + local.tee $3 i32.const 1848 call $~lib/string/String.__eq i32.eqz @@ -2494,7 +2492,7 @@ end i32.const 4 call $~lib/number/I32#toString - local.tee $9 + local.tee $4 i32.const 1872 call $~lib/string/String.__eq i32.eqz @@ -2510,12 +2508,11 @@ global.get $number/a i32.const 1 i32.add - local.tee $11 global.set $number/a - local.get $11 + global.get $number/a end call $~lib/number/I32#toString - local.tee $11 + local.tee $5 i32.const 1896 call $~lib/string/String.__eq i32.eqz @@ -2531,12 +2528,11 @@ global.get $number/a i32.const 1 i32.sub - local.tee $13 global.set $number/a - local.get $13 + global.get $number/a end call $~lib/number/I32#toString - local.tee $13 + local.tee $6 i32.const 496 call $~lib/string/String.__eq i32.eqz @@ -2551,7 +2547,7 @@ i32.const 0 i32.eqz call $~lib/number/Bool#toString - local.tee $15 + local.tee $7 i32.const 1920 call $~lib/string/String.__eq i32.eqz @@ -2566,7 +2562,7 @@ i32.const 1 i32.eqz call $~lib/number/Bool#toString - local.tee $17 + local.tee $8 i32.const 1944 call $~lib/string/String.__eq i32.eqz @@ -2580,14 +2576,14 @@ end block (result i32) global.get $number/a - local.tee $19 + local.tee $9 i32.const 1 i32.add global.set $number/a - local.get $19 + local.get $9 end call $~lib/number/I32#toString - local.tee $19 + local.tee $9 i32.const 496 call $~lib/string/String.__eq i32.eqz @@ -2601,14 +2597,14 @@ end block (result i32) global.get $number/a - local.tee $21 + local.tee $10 i32.const 1 i32.sub global.set $number/a - local.get $21 + local.get $10 end call $~lib/number/I32#toString - local.tee $21 + local.tee $10 i32.const 1896 call $~lib/string/String.__eq i32.eqz @@ -3170,10 +3166,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release ) - (func $start (; 31 ;) (type $FUNCSIG$v) + (func $start (; 32 ;) (type $FUNCSIG$v) call $start:number ) - (func $null (; 32 ;) (type $FUNCSIG$v) + (func $null (; 33 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 8aa28883..3d33f1ef 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,52 +1,36 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$i (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (memory $0 0) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset - local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select + (local $4 i32) + global.get $~lib/rt/stub/offset + i32.const 16 i32.add - i32.const 7 - i32.add - i32.const -8 - i32.and - local.tee $0 - current_memory local.tee $2 i32.const 16 + i32.add + i32.const -16 + i32.and + local.tee $1 + current_memory + local.tee $3 + i32.const 16 i32.shl i32.gt_u if - local.get $2 - local.get $0 + local.get $3 local.get $1 + local.get $2 i32.sub i32.const 65535 i32.add @@ -54,16 +38,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 + local.tee $4 local.get $3 + local.get $4 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $4 grow_memory i32.const 0 i32.lt_s @@ -72,72 +56,32 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 16 - call $~lib/allocator/arena/__mem_allocate - local.tee $0 - i32.const -1520547049 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 64 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + global.set $~lib/rt/stub/offset + local.get $2 i32.const 16 i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 ) - (func $start (; 4 ;) (type $FUNCSIG$v) - i32.const 64 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + (func $start (; 1 ;) (type $FUNCSIG$v) + i32.const 16 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + i32.const 3 + call $~lib/rt/stub/__alloc global.set $optional-typeparameters/tConcrete - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc global.set $optional-typeparameters/tDerived ) - (func $null (; 5 ;) (type $FUNCSIG$v) + (func $null (; 2 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index a74e88c3..21917a32 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -1,85 +1,70 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$didd (func (param i32 f64 f64) (result f64))) (type $FUNCSIG$v (func)) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") + (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 64)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 8)) (export "memory" (memory $0)) (start $start) - (func $optional-typeparameters/testConcrete (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/testConcrete (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $optional-typeparameters/testDerived (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/testDerived (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/util/runtime/adjust (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -89,22 +74,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -113,118 +98,74 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $optional-typeparameters/TestConcrete#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/TestConcrete#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) - (func $optional-typeparameters/TestConcrete#test (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $optional-typeparameters/TestConcrete#test (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 local.get $2 i32.add ) - (func $optional-typeparameters/TestDerived#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $optional-typeparameters/TestDerived#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 ) - (func $optional-typeparameters/TestDerived#test (; 11 ;) (type $FUNCSIG$didd) (param $0 i32) (param $1 f64) (param $2 f64) (result f64) + (func $optional-typeparameters/TestDerived#test (; 7 ;) (type $FUNCSIG$didd) (param $0 i32) (param $1 f64) (param $2 f64) (result f64) local.get $1 local.get $2 f64.add ) - (func $start:optional-typeparameters (; 12 ;) (type $FUNCSIG$v) + (func $start:optional-typeparameters (; 8 ;) (type $FUNCSIG$v) i32.const 1 call $optional-typeparameters/testConcrete drop i32.const 2 call $optional-typeparameters/testDerived drop - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 call $optional-typeparameters/TestConcrete#constructor global.set $optional-typeparameters/tConcrete @@ -242,9 +183,9 @@ call $optional-typeparameters/TestDerived#test drop ) - (func $start (; 13 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) call $start:optional-typeparameters ) - (func $null (; 14 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/overflow.optimized.wat b/tests/compiler/overflow.optimized.wat index 5388fe30..4bc2888f 100644 --- a/tests/compiler/overflow.optimized.wat +++ b/tests/compiler/overflow.optimized.wat @@ -1,8 +1,7 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16") - (data (i32.const 24) "o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") (export "memory" (memory $0)) (func $start (; 0 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index ea0abbf1..67e0bb93 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) diff --git a/tests/compiler/portable-conversions.optimized.wat b/tests/compiler/portable-conversions.optimized.wat index f26424d5..bdadf653 100644 --- a/tests/compiler/portable-conversions.optimized.wat +++ b/tests/compiler/portable-conversions.optimized.wat @@ -3,12 +3,11 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00.") - (data (i32.const 24) "p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") - (global $portable-conversions/i (mut i32) (i32.const 1)) - (global $portable-conversions/I (mut i64) (i64.const 1)) - (global $portable-conversions/f (mut f32) (f32.const 1)) - (global $portable-conversions/F (mut f64) (f64.const 1)) + (data (i32.const 8) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") + (global $portable-conversions/i i32 (i32.const 1)) + (global $portable-conversions/I i64 (i64.const 1)) + (global $portable-conversions/f f32 (f32.const 1)) + (global $portable-conversions/F f64 (f64.const 1)) (export "memory" (memory $0)) (start $start) (func $start:portable-conversions (; 1 ;) (type $FUNCSIG$v) diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat index 66015b9a..11f2e775 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00.\00\00\00\00\00\00\00\00\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00") + (data (i32.const 8) ".\00\00\00\01\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $portable-conversions/i (mut i32) (i32.const 1)) diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.untouched.wat index 045c0f06..c7ef294d 100644 --- a/tests/compiler/possibly-null.untouched.wat +++ b/tests/compiler/possibly-null.untouched.wat @@ -1,7 +1,8 @@ (module (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$v (func)) (memory $0 0) (table $0 1 funcref) @@ -25,130 +26,253 @@ (export "testLogicalOrMulti" (func $possibly-null/testLogicalOrMulti)) (export "testAssign" (func $possibly-null/testAssign)) (export "testNeverNull" (func $possibly-null/testNeverNull)) - (func $possibly-null/testTrue (; 0 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__retain (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $possibly-null/testTrue (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 if nop end + local.get $0 + call $~lib/rt/stub/__release ) - (func $possibly-null/testFalseElse (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $possibly-null/testFalseElse (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.eqz if - return - else - nop - end - ) - (func $possibly-null/testFalseContinuation (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.eqz - if - return - end - ) - (func $possibly-null/testNeNull (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 0 - i32.ne - if - nop - end - ) - (func $possibly-null/testEqNullElse (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 0 - i32.eq - if - return - else - nop - end - ) - (func $possibly-null/testEqNullContinuation (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 0 - i32.eq - if - return - end - ) - (func $possibly-null/testNotEqNull (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 0 - i32.eq - i32.eqz - if - nop - end - ) - (func $possibly-null/testNotNeNullElse (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - return - else - nop - end - ) - (func $possibly-null/testNotNeNullContinuation (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - return - end - ) - (func $possibly-null/testWhile (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) - loop $continue|0 local.get $0 - if - i32.const 0 - local.set $0 - br $continue|0 + call $~lib/rt/stub/__release + return + else + nop + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testFalseContinuation (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + local.get $0 + call $~lib/rt/stub/__release + return + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testNeNull (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.ne + if + nop + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testEqNullElse (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + return + else + nop + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testEqNullContinuation (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.eq + if + local.get $0 + call $~lib/rt/stub/__release + return + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testNotEqNull (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.eq + i32.eqz + if + nop + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testNotNeNullElse (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + local.get $0 + call $~lib/rt/stub/__release + return + else + nop + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testNotNeNullContinuation (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + local.get $0 + call $~lib/rt/stub/__release + return + end + local.get $0 + call $~lib/rt/stub/__release + ) + (func $~lib/rt/stub/__retainRelease (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $possibly-null/testWhile (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + block $break|0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.const 0 + call $~lib/rt/stub/__retainRelease + local.set $0 + br $continue|0 + end end end + local.get $0 + call $~lib/rt/stub/__release ) - (func $possibly-null/testWhile2 (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - loop $continue|0 - local.get $0 - if - local.get $1 - local.set $0 - br $continue|0 + (func $possibly-null/testWhile2 (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + loop $continue|0 + local.get $0 + if + local.get $0 + local.get $1 + call $~lib/rt/stub/__retainRelease + local.set $0 + br $continue|0 + end end end + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release ) - (func $possibly-null/testWhile3 (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - loop $continue|0 - local.get $0 - if - local.get $1 + (func $possibly-null/testWhile3 (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + block $break|0 + loop $continue|0 + local.get $0 if local.get $1 - local.set $0 + if + local.get $0 + local.get $1 + call $~lib/rt/stub/__retainRelease + local.set $0 + end + br $continue|0 end - br $continue|0 end end + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release ) - (func $possibly-null/requireNonNull (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $possibly-null/requireNonNull (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 ) - (func $possibly-null/testLogicalAnd (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $possibly-null/testLogicalAnd (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 if (result i32) local.get $0 call $possibly-null/requireNonNull + local.tee $1 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 else i32.const 0 end drop + local.get $0 + call $~lib/rt/stub/__release ) - (func $possibly-null/testLogicalOr (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $possibly-null/testLogicalOr (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.eqz if (result i32) @@ -156,12 +280,25 @@ else local.get $0 call $possibly-null/requireNonNull + local.tee $1 i32.const 0 i32.ne + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 end drop + local.get $0 + call $~lib/rt/stub/__release ) - (func $possibly-null/testLogicalAndMulti (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $possibly-null/testLogicalAndMulti (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 if (result i32) local.get $1 @@ -173,8 +310,18 @@ else nop end + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release ) - (func $possibly-null/testLogicalOrMulti (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $possibly-null/testLogicalOrMulti (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.eqz if (result i32) @@ -188,18 +335,39 @@ else nop end - ) - (func $possibly-null/testAssign (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + call $~lib/rt/stub/__release local.get $1 - local.set $0 + call $~lib/rt/stub/__release ) - (func $possibly-null/testNeverNull (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $possibly-null/testAssign (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + call $~lib/rt/stub/__retainRelease + local.set $0 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $possibly-null/testNeverNull (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 if local.get $0 drop end + local.get $0 + call $~lib/rt/stub/__release ) - (func $null (; 19 ;) (type $FUNCSIG$v) + (func $null (; 22 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rc/global-init.optimized.wat b/tests/compiler/rc/global-init.optimized.wat index 022f6a92..8cca0966 100644 --- a/tests/compiler/rc/global-init.optimized.wat +++ b/tests/compiler/rc/global-init.optimized.wat @@ -1,22 +1,22 @@ (module - (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$viii (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 12) "\01\00\00\00\10") - (data (i32.const 24) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 72) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 120) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 176) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 216) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 272) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") + (data (i32.const 12) "\01\00\00\00\01") + (data (i32.const 24) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 72) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 176) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 272) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $rc/global-init/a (mut i32) (i32.const 0)) (global $rc/global-init/b (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -25,19 +25,7 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $start (; 3 ;) (type $FUNCSIG$v) - i32.const 24 - global.set $rc/global-init/a - i32.const 24 - global.set $rc/global-init/b - global.get $rc/global-init/a - call $~lib/rt/pure/__retainRelease - global.set $rc/global-init/a - global.get $rc/global-init/b - call $~lib/rt/pure/__retainRelease - global.set $rc/global-init/b - ) - (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -203,7 +191,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -488,7 +476,7 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -514,32 +502,569 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 272 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 272 + i32.load + i32.gt_u if i32.const 136 i32.const 192 - i32.const 23 - i32.const 34 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 272 + i32.const 276 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 88 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 88 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 304 + i32.const 0 + i32.store + i32.const 1872 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 304 + i32.const 1888 + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 232 + i32.const 88 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 88 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 88 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $1 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $1 + end + local.get $1 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -712,7 +1237,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 9 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 16 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -747,7 +1272,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -766,7 +1291,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -856,11 +1381,11 @@ end end ) - (func $~lib/rt/pure/__retainRelease (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__retainRelease (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if local.get $0 - i32.const 408 + i32.const 300 i32.gt_u if local.get $0 @@ -871,7 +1396,19 @@ end i32.const 0 ) - (func $~lib/rt/pure/markGray (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $start (; 20 ;) (type $FUNCSIG$v) + i32.const 24 + global.set $rc/global-init/a + i32.const 24 + global.set $rc/global-init/b + global.get $rc/global-init/a + call $~lib/rt/pure/__retainRelease + global.set $rc/global-init/a + global.get $rc/global-init/b + call $~lib/rt/pure/__retainRelease + global.set $rc/global-init/b + ) + (func $~lib/rt/pure/markGray (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -895,7 +1432,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -908,7 +1445,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -942,7 +1479,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -970,9 +1507,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 408 + i32.const 300 i32.lt_u if return @@ -1080,572 +1617,29 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default end - unreachable + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/tlsf/addMemory (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 20 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 416 - i32.const 0 - i32.store - i32.const 1984 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 416 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 416 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 416 - i32.const 2000 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 416 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 232 - i32.const 88 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 88 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $1 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $1 - end - local.get $1 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add + unreachable ) (func $null (; 27 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index 67b31436..a4052814 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -1,25 +1,25 @@ (module (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 24) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 72) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 120) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 176) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 216) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 272) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 24) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 72) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 176) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 272) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $rc/global-init/a (mut i32) (i32.const 0)) @@ -29,31 +29,10 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 272)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 408)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 300)) (export "memory" (memory $0)) (start $start) - (func $rc/global-init/getRef (; 4 ;) (type $FUNCSIG$i) (result i32) - i32.const 24 - call $~lib/rt/pure/__retain - ) - (func $start:rc/global-init (; 5 ;) (type $FUNCSIG$v) - call $rc/global-init/getRef - global.set $rc/global-init/a - call $rc/global-init/getRef - global.set $rc/global-init/b - i32.const 0 - global.get $rc/global-init/a - call $~lib/rt/pure/__retainRelease - global.set $rc/global-init/a - i32.const 0 - global.get $rc/global-init/b - call $~lib/rt/pure/__retainRelease - global.set $rc/global-init/b - ) - (func $start (; 6 ;) (type $FUNCSIG$v) - call $start:rc/global-init - ) - (func $~lib/rt/pure/increment (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/increment (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -102,7 +81,7 @@ unreachable end ) - (func $~lib/rt/pure/__retain (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/heap/HEAP_BASE i32.gt_u @@ -114,7 +93,11 @@ end local.get $0 ) - (func $~lib/rt/tlsf/removeBlock (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $rc/global-init/getRef (; 6 ;) (type $FUNCSIG$i) (result i32) + i32.const 24 + call $~lib/rt/pure/__retain + ) + (func $~lib/rt/tlsf/removeBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -332,7 +315,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -696,7 +679,7 @@ i32.store offset=4 end ) - (func $~lib/rt/tlsf/freeBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -725,36 +708,795 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if i32.const 136 i32.const 192 - i32.const 23 - i32.const 34 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/memory/memory.copy (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (; 11 ;) (type $FUNCSIG$iiii) (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 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 12 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 232 + i32.const 88 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -960,7 +1702,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 14 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 20 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1005,7 +1747,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -1025,7 +1767,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1129,23 +1871,14 @@ end end ) - (func $~lib/rt/pure/__retainRelease (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__retainRelease (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 local.get $1 + local.get $0 i32.ne if global.get $~lib/heap/HEAP_BASE local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end local.get $1 local.get $2 i32.gt_u @@ -1153,12 +1886,38 @@ local.get $1 i32.const 16 i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub call $~lib/rt/pure/decrement end end - local.get $0 + local.get $1 ) - (func $~lib/rt/pure/markGray (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $start:rc/global-init (; 24 ;) (type $FUNCSIG$v) + call $rc/global-init/getRef + global.set $rc/global-init/a + call $rc/global-init/getRef + global.set $rc/global-init/b + global.get $rc/global-init/a + i32.const 0 + call $~lib/rt/pure/__retainRelease + global.set $rc/global-init/a + global.get $rc/global-init/b + i32.const 0 + call $~lib/rt/pure/__retainRelease + global.set $rc/global-init/b + ) + (func $start (; 25 ;) (type $FUNCSIG$v) + call $start:rc/global-init + ) + (func $~lib/rt/pure/markGray (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1185,7 +1944,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1202,7 +1961,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1239,7 +1998,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1268,7 +2027,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1422,23 +2181,23 @@ end end ) - (func $~lib/rt/__visit_members (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -1448,7 +2207,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -1458,18 +2229,6 @@ end block block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end unreachable unreachable end @@ -1479,767 +2238,6 @@ unreachable end ) - (func $~lib/rt/tlsf/addMemory (; 24 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 25 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 232 - i32.const 88 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) (func $null (; 32 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index 9f86cf3f..a9fc9d35 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -1,43 +1,30 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 12) "\01\00\00\00\10") - (data (i32.const 24) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 72) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 120) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 176) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 216) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 272) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") + (data (i32.const 12) "\01\00\00\00\01") + (data (i32.const 24) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 72) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 176) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 272) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $start (; 4 ;) (type $FUNCSIG$v) - i32.const 24 - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - i32.const 24 - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/increment (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/increment (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -78,9 +65,9 @@ unreachable end ) - (func $~lib/rt/pure/__retain (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 416 + i32.const 308 i32.gt_u if local.get $0 @@ -90,7 +77,7 @@ end local.get $0 ) - (func $~lib/rt/tlsf/removeBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -256,7 +243,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -541,7 +528,7 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -567,32 +554,568 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 272 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 272 + i32.load + i32.gt_u if i32.const 136 i32.const 192 - i32.const 23 - i32.const 34 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 272 + i32.const 276 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 88 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 88 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 11 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 320 + i32.const 0 + i32.store + i32.const 1888 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 320 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 320 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 320 + i32.const 1904 + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 232 + i32.const 88 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 88 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 88 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -765,7 +1288,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 12 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -801,7 +1324,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -820,7 +1343,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -910,9 +1433,9 @@ end end ) - (func $~lib/rt/pure/__release (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 416 + i32.const 308 i32.gt_u if local.get $0 @@ -921,7 +1444,20 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $start (; 23 ;) (type $FUNCSIG$v) + i32.const 24 + call $~lib/rt/pure/__retain + call $~lib/rt/pure/__release + i32.const 24 + call $~lib/rt/pure/__retain + call $~lib/rt/pure/__release + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + call $~lib/rt/pure/__release + ) + (func $~lib/rt/pure/markGray (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -945,7 +1481,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -958,7 +1494,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -992,7 +1528,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1020,9 +1556,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 416 + i32.const 308 i32.lt_u if return @@ -1130,571 +1666,29 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - unreachable + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/tlsf/addMemory (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 23 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 416 - i32.const 0 - i32.store - i32.const 1984 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 416 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 416 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 416 - i32.const 2000 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 416 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 232 - i32.const 88 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 88 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 88 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add + unreachable ) (func $null (; 30 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index 770a8cb1..610b5d34 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -1,25 +1,25 @@ (module - (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 24) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 72) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 120) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 176) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 216) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 272) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 24) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 72) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 176) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 272) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -27,52 +27,10 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 272)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 416)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 308)) (export "memory" (memory $0)) (start $start) - (func $rc/local-init/getRef (; 4 ;) (type $FUNCSIG$i) (result i32) - i32.const 24 - call $~lib/rt/pure/__retain - ) - (func $rc/local-init/Ref#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $start:rc/local-init (; 6 ;) (type $FUNCSIG$v) - (local $0 i32) - block - i32.const 24 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - call $rc/local-init/getRef - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - i32.const 0 - call $rc/local-init/Ref#constructor - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - ) - (func $start (; 7 ;) (type $FUNCSIG$v) - call $start:rc/local-init - ) - (func $~lib/rt/pure/increment (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/increment (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -121,7 +79,7 @@ unreachable end ) - (func $~lib/rt/pure/__retain (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 global.get $~lib/heap/HEAP_BASE i32.gt_u @@ -133,7 +91,7 @@ end local.get $0 ) - (func $~lib/rt/tlsf/removeBlock (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -351,7 +309,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -715,7 +673,7 @@ i32.store offset=4 end ) - (func $~lib/rt/tlsf/freeBlock (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -744,36 +702,795 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if i32.const 136 i32.const 192 - i32.const 23 - i32.const 34 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (; 10 ;) (type $FUNCSIG$iiii) (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 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 11 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 232 + i32.const 88 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 88 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -979,7 +1696,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 15 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1024,7 +1741,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -1044,7 +1761,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1148,7 +1865,7 @@ end end ) - (func $~lib/rt/pure/__release (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.get $~lib/heap/HEAP_BASE i32.gt_u @@ -1159,7 +1876,49 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $rc/local-init/getRef (; 23 ;) (type $FUNCSIG$i) (result i32) + i32.const 24 + call $~lib/rt/pure/__retain + ) + (func $rc/local-init/Ref#constructor (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $start:rc/local-init (; 25 ;) (type $FUNCSIG$v) + (local $0 i32) + block + i32.const 24 + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + call $rc/local-init/getRef + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + i32.const 0 + call $rc/local-init/Ref#constructor + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + ) + (func $start (; 26 ;) (type $FUNCSIG$v) + call $start:rc/local-init + ) + (func $~lib/rt/pure/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1186,7 +1945,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1203,7 +1962,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1240,7 +1999,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1269,7 +2028,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1423,23 +2182,23 @@ end end ) - (func $~lib/rt/__visit_members (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -1449,7 +2208,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -1459,18 +2230,6 @@ end block block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end unreachable unreachable end @@ -1480,767 +2239,6 @@ unreachable end ) - (func $~lib/rt/tlsf/addMemory (; 25 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 232 - i32.const 88 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 88 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) (func $null (; 33 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index 1219008f..305624ac 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -1,139 +1,31 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 56) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 104) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 160) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") - (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $rc/logical-and-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - ) - (func $start:rc/logical-and-mismatch (; 5 ;) (type $FUNCSIG$v) - (local $0 i32) - call $rc/logical-and-mismatch/Ref#constructor - global.set $rc/logical-and-mismatch/gloRef - call $rc/logical-and-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__retain - else - local.get $0 - end - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - call $rc/logical-and-mismatch/Ref#constructor - else - local.get $0 - call $~lib/rt/pure/__retain - end - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/Ref#constructor - else - local.get $0 - end - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - global.get $rc/logical-and-mismatch/gloRef - else - local.get $0 - end - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $start (; 6 ;) (type $FUNCSIG$v) - call $start:rc/logical-and-mismatch - ) - (func $~lib/rt/pure/increment (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 400 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -146,7 +38,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -168,7 +60,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -213,7 +105,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -299,7 +191,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -310,7 +202,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -324,7 +216,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -397,7 +289,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -454,7 +346,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -469,7 +361,7 @@ i32.ne if i32.const 0 - i32.const 72 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -519,7 +411,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -584,7 +476,607 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 304 + i32.const 0 + i32.store + i32.const 1872 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 304 + i32.const 1888 + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 292 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $rc/logical-and-mismatch/Ref#constructor (; 16 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + ) + (func $~lib/rt/tlsf/freeBlock (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -593,7 +1085,7 @@ i32.and if i32.const 0 - i32.const 72 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -610,32 +1102,27 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 256 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 256 + i32.load + i32.gt_u if - i32.const 120 i32.const 176 - i32.const 23 - i32.const 34 + i32.const 232 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 256 + i32.const 260 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -808,7 +1295,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 14 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 20 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -844,7 +1331,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -863,7 +1350,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -880,7 +1367,7 @@ i32.and if i32.const 0 - i32.const 24 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -913,7 +1400,7 @@ i32.le_u if i32.const 0 - i32.const 24 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -953,9 +1440,9 @@ end end ) - (func $~lib/rt/pure/__release (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 400 + i32.const 292 i32.gt_u if local.get $0 @@ -964,7 +1451,56 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $start:rc/logical-and-mismatch (; 24 ;) (type $FUNCSIG$v) + (local $0 i32) + call $rc/logical-and-mismatch/Ref#constructor + global.set $rc/logical-and-mismatch/gloRef + call $rc/logical-and-mismatch/Ref#constructor + local.tee $0 + if (result i32) + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-and-mismatch/gloRef + call $~lib/rt/pure/__retain + else + local.get $0 + end + call $~lib/rt/pure/__release + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + call $rc/logical-and-mismatch/Ref#constructor + else + local.get $0 + call $~lib/rt/pure/__retain + end + call $~lib/rt/pure/__release + call $rc/logical-and-mismatch/Ref#constructor + local.tee $0 + if (result i32) + local.get $0 + call $~lib/rt/pure/__release + call $rc/logical-and-mismatch/Ref#constructor + else + local.get $0 + end + call $~lib/rt/pure/__release + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + global.get $rc/logical-and-mismatch/gloRef + else + local.get $0 + end + call $~lib/rt/pure/__retain + call $~lib/rt/pure/__release + global.get $rc/logical-and-mismatch/gloRef + call $~lib/rt/pure/__release + ) + (func $start (; 25 ;) (type $FUNCSIG$v) + call $start:rc/logical-and-mismatch + ) + (func $~lib/rt/pure/markGray (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -988,7 +1524,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1001,7 +1537,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1035,7 +1571,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1063,9 +1599,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 400 + i32.const 292 i32.lt_u if return @@ -1108,7 +1644,7 @@ i32.le_u if i32.const 0 - i32.const 24 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1141,7 +1677,7 @@ i32.ne if i32.const 0 - i32.const 24 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1166,578 +1702,36 @@ br $break|0 end i32.const 0 - i32.const 24 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - unreachable + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/tlsf/addMemory (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 25 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 400 - i32.const 0 - i32.store - i32.const 1968 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 400 - i32.const 1984 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 400 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 72 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 72 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add + unreachable ) (func $null (; 32 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index 334110a2..c3b7f399 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -1,179 +1,36 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 56) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 104) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 160) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 256)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 400)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 292)) (export "memory" (memory $0)) (start $start) - (func $rc/logical-and-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/logical-and-mismatch/getRef (; 5 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - call $rc/logical-and-mismatch/Ref#constructor - ) - (func $start:rc/logical-and-mismatch (; 6 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - call $rc/logical-and-mismatch/Ref#constructor - global.set $rc/logical-and-mismatch/gloRef - block - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__retain - else - local.get $0 - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - call $rc/logical-and-mismatch/getRef - else - local.get $0 - call $~lib/rt/pure/__retain - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/getRef - else - local.get $0 - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - global.get $rc/logical-and-mismatch/gloRef - else - local.get $0 - end - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $start (; 7 ;) (type $FUNCSIG$v) - call $start:rc/logical-and-mismatch - ) - (func $~lib/rt/pure/increment (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -193,7 +50,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -218,7 +75,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -270,7 +127,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -315,7 +172,7 @@ end i32.eq if - block $~lib/rt/tlsf/SETHEAD|inlined.0 + block $~lib/rt/tlsf/SETHEAD|inlined.1 local.get $0 local.set $11 local.get $4 @@ -352,7 +209,7 @@ i32.load offset=4 end local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 + block $~lib/rt/tlsf/SETSL|inlined.1 local.get $0 local.set $11 local.get $4 @@ -391,7 +248,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -408,7 +265,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -423,7 +280,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -522,7 +379,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -585,7 +442,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -601,7 +458,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -658,7 +515,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -695,7 +552,7 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 + block $~lib/rt/tlsf/SETHEAD|inlined.2 local.get $0 local.set $12 local.get $9 @@ -724,7 +581,7 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 + block $~lib/rt/tlsf/SETSL|inlined.2 local.get $0 local.set $3 local.get $9 @@ -755,7 +612,847 @@ i32.store offset=4 end ) - (func $~lib/rt/tlsf/freeBlock (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (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 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $rc/logical-and-mismatch/Ref#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $rc/logical-and-mismatch/getRef (; 17 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $rc/logical-and-mismatch/Ref#constructor + ) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -767,7 +1464,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -784,36 +1481,32 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if - i32.const 120 i32.const 176 - i32.const 23 - i32.const 34 + i32.const 232 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1019,7 +1712,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 15 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1064,7 +1757,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -1084,7 +1777,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1104,7 +1797,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -1143,7 +1836,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -1188,7 +1881,7 @@ end end ) - (func $~lib/rt/pure/__release (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.get $~lib/heap/HEAP_BASE i32.gt_u @@ -1199,7 +1892,73 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $start:rc/logical-and-mismatch (; 25 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 0 + call $rc/logical-and-mismatch/Ref#constructor + global.set $rc/logical-and-mismatch/gloRef + block + call $rc/logical-and-mismatch/getRef + local.tee $0 + if (result i32) + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-and-mismatch/gloRef + call $~lib/rt/pure/__retain + else + local.get $0 + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + call $rc/logical-and-mismatch/getRef + else + local.get $0 + call $~lib/rt/pure/__retain + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + call $rc/logical-and-mismatch/getRef + local.tee $0 + if (result i32) + local.get $0 + call $~lib/rt/pure/__release + call $rc/logical-and-mismatch/getRef + else + local.get $0 + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + global.get $rc/logical-and-mismatch/gloRef + else + local.get $0 + end + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + global.get $rc/logical-and-mismatch/gloRef + call $~lib/rt/pure/__release + ) + (func $start (; 26 ;) (type $FUNCSIG$v) + call $start:rc/logical-and-mismatch + ) + (func $~lib/rt/pure/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1226,7 +1985,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1243,7 +2002,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1280,7 +2039,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1309,7 +2068,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1371,7 +2130,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1418,7 +2177,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1455,7 +2214,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -1463,23 +2222,23 @@ end end ) - (func $~lib/rt/__visit_members (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -1489,7 +2248,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -1499,18 +2270,6 @@ end block block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end unreachable unreachable end @@ -1520,767 +2279,6 @@ unreachable end ) - (func $~lib/rt/tlsf/addMemory (; 25 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 72 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) (func $null (; 33 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index b3740784..4a004364 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -1,139 +1,31 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 56) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 104) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 160) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") - (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $rc/logical-or-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - ) - (func $start:rc/logical-or-mismatch (; 5 ;) (type $FUNCSIG$v) - (local $0 i32) - call $rc/logical-or-mismatch/Ref#constructor - global.set $rc/logical-or-mismatch/gloRef - call $rc/logical-or-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__retain - end - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - call $rc/logical-or-mismatch/Ref#constructor - end - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/Ref#constructor - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/Ref#constructor - end - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - else - global.get $rc/logical-or-mismatch/gloRef - end - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $start (; 6 ;) (type $FUNCSIG$v) - call $start:rc/logical-or-mismatch - ) - (func $~lib/rt/pure/increment (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 400 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -146,7 +38,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -168,7 +60,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -213,7 +105,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -299,7 +191,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -310,7 +202,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -324,7 +216,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -397,7 +289,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -454,7 +346,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -469,7 +361,7 @@ i32.ne if i32.const 0 - i32.const 72 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -519,7 +411,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -584,7 +476,607 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 304 + i32.const 0 + i32.store + i32.const 1872 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 304 + i32.const 1888 + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 292 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $rc/logical-or-mismatch/Ref#constructor (; 16 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + ) + (func $~lib/rt/tlsf/freeBlock (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -593,7 +1085,7 @@ i32.and if i32.const 0 - i32.const 72 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -610,32 +1102,27 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 256 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 256 + i32.load + i32.gt_u if - i32.const 120 i32.const 176 - i32.const 23 - i32.const 34 + i32.const 232 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 256 + i32.const 260 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -808,7 +1295,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 14 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 20 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -844,7 +1331,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -863,7 +1350,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -880,7 +1367,7 @@ i32.and if i32.const 0 - i32.const 24 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -913,7 +1400,7 @@ i32.le_u if i32.const 0 - i32.const 24 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -953,9 +1440,9 @@ end end ) - (func $~lib/rt/pure/__release (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 400 + i32.const 292 i32.gt_u if local.get $0 @@ -964,7 +1451,56 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $start:rc/logical-or-mismatch (; 24 ;) (type $FUNCSIG$v) + (local $0 i32) + call $rc/logical-or-mismatch/Ref#constructor + global.set $rc/logical-or-mismatch/gloRef + call $rc/logical-or-mismatch/Ref#constructor + local.tee $0 + if (result i32) + local.get $0 + else + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-or-mismatch/gloRef + call $~lib/rt/pure/__retain + end + call $~lib/rt/pure/__release + global.get $rc/logical-or-mismatch/gloRef + local.tee $0 + if (result i32) + local.get $0 + call $~lib/rt/pure/__retain + else + call $rc/logical-or-mismatch/Ref#constructor + end + call $~lib/rt/pure/__release + call $rc/logical-or-mismatch/Ref#constructor + local.tee $0 + if (result i32) + local.get $0 + else + local.get $0 + call $~lib/rt/pure/__release + call $rc/logical-or-mismatch/Ref#constructor + end + call $~lib/rt/pure/__release + global.get $rc/logical-or-mismatch/gloRef + local.tee $0 + if (result i32) + local.get $0 + else + global.get $rc/logical-or-mismatch/gloRef + end + call $~lib/rt/pure/__retain + call $~lib/rt/pure/__release + global.get $rc/logical-or-mismatch/gloRef + call $~lib/rt/pure/__release + ) + (func $start (; 25 ;) (type $FUNCSIG$v) + call $start:rc/logical-or-mismatch + ) + (func $~lib/rt/pure/markGray (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -988,7 +1524,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1001,7 +1537,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1035,7 +1571,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1063,9 +1599,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 400 + i32.const 292 i32.lt_u if return @@ -1108,7 +1644,7 @@ i32.le_u if i32.const 0 - i32.const 24 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1141,7 +1677,7 @@ i32.ne if i32.const 0 - i32.const 24 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1166,578 +1702,36 @@ br $break|0 end i32.const 0 - i32.const 24 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - unreachable + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/tlsf/addMemory (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 25 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 400 - i32.const 0 - i32.store - i32.const 1968 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 400 - i32.const 1984 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 400 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 72 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 72 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add + unreachable ) (func $null (; 32 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index 63b18acf..dae55a32 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -1,179 +1,36 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 56) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 104) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 160) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 256)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 400)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 292)) (export "memory" (memory $0)) (start $start) - (func $rc/logical-or-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/logical-or-mismatch/getRef (; 5 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - call $rc/logical-or-mismatch/Ref#constructor - ) - (func $start:rc/logical-or-mismatch (; 6 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - call $rc/logical-or-mismatch/Ref#constructor - global.set $rc/logical-or-mismatch/gloRef - block - call $rc/logical-or-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__retain - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - call $rc/logical-or-mismatch/getRef - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - call $rc/logical-or-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/getRef - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - else - global.get $rc/logical-or-mismatch/gloRef - end - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $start (; 7 ;) (type $FUNCSIG$v) - call $start:rc/logical-or-mismatch - ) - (func $~lib/rt/pure/increment (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -193,7 +50,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -218,7 +75,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -270,7 +127,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -315,7 +172,7 @@ end i32.eq if - block $~lib/rt/tlsf/SETHEAD|inlined.0 + block $~lib/rt/tlsf/SETHEAD|inlined.1 local.get $0 local.set $11 local.get $4 @@ -352,7 +209,7 @@ i32.load offset=4 end local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 + block $~lib/rt/tlsf/SETSL|inlined.1 local.get $0 local.set $11 local.get $4 @@ -391,7 +248,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -408,7 +265,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -423,7 +280,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -522,7 +379,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -585,7 +442,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -601,7 +458,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -658,7 +515,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -695,7 +552,7 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 + block $~lib/rt/tlsf/SETHEAD|inlined.2 local.get $0 local.set $12 local.get $9 @@ -724,7 +581,7 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 + block $~lib/rt/tlsf/SETSL|inlined.2 local.get $0 local.set $3 local.get $9 @@ -755,7 +612,847 @@ i32.store offset=4 end ) - (func $~lib/rt/tlsf/freeBlock (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (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 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $rc/logical-or-mismatch/Ref#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $rc/logical-or-mismatch/getRef (; 17 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $rc/logical-or-mismatch/Ref#constructor + ) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -767,7 +1464,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -784,36 +1481,32 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if - i32.const 120 i32.const 176 - i32.const 23 - i32.const 34 + i32.const 232 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1019,7 +1712,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 15 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1064,7 +1757,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -1084,7 +1777,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1104,7 +1797,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -1143,7 +1836,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -1188,7 +1881,7 @@ end end ) - (func $~lib/rt/pure/__release (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.get $~lib/heap/HEAP_BASE i32.gt_u @@ -1199,7 +1892,73 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $start:rc/logical-or-mismatch (; 25 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 0 + call $rc/logical-or-mismatch/Ref#constructor + global.set $rc/logical-or-mismatch/gloRef + block + call $rc/logical-or-mismatch/getRef + local.tee $0 + if (result i32) + local.get $0 + else + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-or-mismatch/gloRef + call $~lib/rt/pure/__retain + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + global.get $rc/logical-or-mismatch/gloRef + local.tee $0 + if (result i32) + local.get $0 + call $~lib/rt/pure/__retain + else + call $rc/logical-or-mismatch/getRef + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + call $rc/logical-or-mismatch/getRef + local.tee $0 + if (result i32) + local.get $0 + else + local.get $0 + call $~lib/rt/pure/__release + call $rc/logical-or-mismatch/getRef + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + block + global.get $rc/logical-or-mismatch/gloRef + local.tee $0 + if (result i32) + local.get $0 + else + global.get $rc/logical-or-mismatch/gloRef + end + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + end + global.get $rc/logical-or-mismatch/gloRef + call $~lib/rt/pure/__release + ) + (func $start (; 26 ;) (type $FUNCSIG$v) + call $start:rc/logical-or-mismatch + ) + (func $~lib/rt/pure/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1226,7 +1985,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1243,7 +2002,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1280,7 +2039,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1309,7 +2068,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1371,7 +2130,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1418,7 +2177,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1455,7 +2214,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -1463,23 +2222,23 @@ end end ) - (func $~lib/rt/__visit_members (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -1489,7 +2248,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -1499,18 +2270,6 @@ end block block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end unreachable unreachable end @@ -1520,767 +2279,6 @@ unreachable end ) - (func $~lib/rt/tlsf/addMemory (; 25 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 72 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) (func $null (; 33 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index 97cbe08e..40e4480a 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -1,56 +1,35 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 56) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 112) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 152) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) (export "__collect" (func $~lib/rt/pure/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) (start $start) - (func $~lib/rt/pure/markGray (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/tlsf/removeBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -216,7 +195,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -501,348 +480,548 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 + (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz if i32.const 0 i32.const 24 - i32.const 530 - i32.const 2 + i32.const 384 + i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub i32.const 1 i32.or + i32.or i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/pure/scanBlack (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) + (local $0 i32) (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq + i32.const 1 + current_memory + local.tee $0 + i32.gt_s if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s else i32.const 0 end if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__collect (; 8 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $5 - local.tee $2 - local.set $3 - global.get $~lib/rt/pure/CUR + i32.const 304 + i32.const 0 + i32.store + i32.const 1872 + i32.const 0 + i32.store + i32.const 0 local.set $0 loop $repeat|0 block $break|0 - local.get $3 local.get $0 + i32.const 23 i32.ge_u br_if $break|0 - local.get $3 - i32.load - local.tee $4 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - else - i32.const 0 - local.get $1 - i32.const 268435455 - i32.and - i32.eqz - local.get $1 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 local.get $1 - i32.const 2147483647 - i32.and - i32.store offset=4 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 end end - local.get $3 - i32.const 4 + local.get $0 + i32.const 1 i32.add - local.set $3 + local.set $0 br $repeat|0 end end - local.get $2 - global.set $~lib/rt/pure/CUR - local.get $5 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|1 - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|1 - end - end - local.get $5 - local.set $0 - loop $repeat|2 - block $break|2 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|2 - local.get $0 - i32.load - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|2 - end - end - local.get $5 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/__instanceof (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 + i32.const 304 + i32.const 1888 + current_memory i32.const 16 - i32.sub - i32.load offset=8 - local.tee $0 - if (result i32) - local.get $0 - i32.const 256 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 256 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 304 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/__typeinfo (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 256 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 1073741808 + i32.ge_u if i32.const 72 - i32.const 128 - i32.const 23 - i32.const 34 + i32.const 24 + i32.const 446 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 3 - i32.shl + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 i32.const 256 - i32.add - i32.load - ) - (func $start (; 11 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/increment (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 i32.const 0 - i32.const 168 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.and + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz if i32.const 0 - i32.const 168 - i32.const 106 + i32.const 24 + i32.const 336 i32.const 13 call $~lib/builtins/abort unreachable end - ) - (func $~lib/rt/pure/__retain (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $2 + i32.const 2 + i32.shl local.get $0 - i32.const 400 - i32.gt_u - if + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end end local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1015,7 +1194,285 @@ end end ) - (func $~lib/rt/pure/growRoots (; 15 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/reallocateBlock (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/tlsf/freeBlock (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 292 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 256 + i32.load + i32.gt_u + if + i32.const 176 + i32.const 232 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 260 + i32.add + i32.load + ) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1051,7 +1508,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -1070,7 +1527,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1085,7 +1542,7 @@ i32.and if i32.const 0 - i32.const 168 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -1118,7 +1575,7 @@ i32.le_u if i32.const 0 - i32.const 168 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -1158,9 +1615,9 @@ end end ) - (func $~lib/rt/pure/__release (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 400 + i32.const 292 i32.gt_u if local.get $0 @@ -1169,9 +1626,269 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/__visit (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/markGray (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 - i32.const 400 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__collect (; 27 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/pure/CUR + local.set $0 + loop $repeat|0 + block $break|0 + local.get $3 + local.get $0 + i32.ge_u + br_if $break|0 + local.get $3 + i32.load + local.tee $4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $2 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + else + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 + i32.const 1879048192 + i32.and + select + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $1 + i32.const 2147483647 + i32.and + i32.store offset=4 + end + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $repeat|0 + end + end + local.get $2 + global.set $~lib/rt/pure/CUR + local.get $5 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 + local.get $2 + i32.ge_u + br_if $break|1 + local.get $0 + i32.load + call $~lib/rt/pure/scan + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $repeat|1 + end + end + local.get $5 + local.set $0 + loop $repeat|2 + block $break|2 + local.get $0 + local.get $2 + i32.ge_u + br_if $break|2 + local.get $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 2147483647 + i32.and + i32.store offset=4 + local.get $1 + call $~lib/rt/pure/collectWhite + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $repeat|2 + end + end + local.get $5 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/__instanceof (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.tee $0 + i32.const 256 + i32.load + i32.le_u + if + loop $continue|0 + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 3 + i32.shl + i32.const 260 + i32.add + i32.load offset=4 + local.tee $0 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $start (; 29 ;) (type $FUNCSIG$v) + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + call $~lib/rt/pure/__release + ) + (func $~lib/rt/pure/__visit (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 292 i32.lt_u if return @@ -1214,7 +1931,7 @@ i32.le_u if i32.const 0 - i32.const 168 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1247,7 +1964,7 @@ i32.ne if i32.const 0 - i32.const 168 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1272,580 +1989,38 @@ br $break|0 end i32.const 0 - i32.const 168 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - unreachable + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end + unreachable ) - (func $~lib/rt/tlsf/addMemory (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 24 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 24 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 22 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 400 - i32.const 0 - i32.store - i32.const 1968 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 400 - i32.const 1984 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 400 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 24 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 24 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 24 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $null (; 29 ;) (type $FUNCSIG$v) + (func $null (; 32 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 4d670391..c1b5e8c6 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -1,88 +1,40 @@ (module - (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 56) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 152) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 256)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 400)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 292)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) (export "__retain" (func $~lib/rt/pure/__retain)) (export "__release" (func $~lib/rt/pure/__release)) (export "__collect" (func $~lib/rt/pure/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) (start $start) - (func $rc/rereturn/Ref#constructor (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/rereturn/getRef (; 2 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - call $rc/rereturn/Ref#constructor - ) - (func $rc/rereturn/rereturnRef (; 3 ;) (type $FUNCSIG$i) (result i32) - call $rc/rereturn/getRef - ) - (func $start:rc/rereturn (; 4 ;) (type $FUNCSIG$v) - call $rc/rereturn/rereturnRef - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/markGray (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -224,7 +176,7 @@ end i32.eq if - block $~lib/rt/tlsf/SETHEAD|inlined.0 + block $~lib/rt/tlsf/SETHEAD|inlined.1 local.get $0 local.set $11 local.get $4 @@ -261,7 +213,7 @@ i32.load offset=4 end local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 + block $~lib/rt/tlsf/SETSL|inlined.1 local.get $0 local.set $11 local.get $4 @@ -300,7 +252,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -604,7 +556,7 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 + block $~lib/rt/tlsf/SETHEAD|inlined.2 local.get $0 local.set $12 local.get $9 @@ -633,7 +585,7 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 + block $~lib/rt/tlsf/SETSL|inlined.2 local.get $0 local.set $3 local.get $9 @@ -664,396 +616,770 @@ i32.store offset=4 end ) - (func $~lib/rt/tlsf/freeBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (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 local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/scanBlack (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq + i32.le_u if (result i32) local.get $1 - i32.const -2147483648 + i32.const 15 i32.and i32.eqz else i32.const 0 end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 i32.const 16 i32.add - i32.const 5 - call $~lib/rt/__visit_members + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 end - global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/freeBlock + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 ) - (func $~lib/rt/pure/__collect (; 12 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/pure/ROOTS + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 - local.get $0 + current_memory local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end + i32.const 0 + local.set $4 loop $repeat|0 - local.get $2 - local.get $3 + local.get $4 + i32.const 23 i32.lt_u i32.eqz br_if $break|0 - local.get $2 - i32.load - local.set $4 - local.get $4 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 local.get $4 - call $~lib/rt/pure/markGray - local.get $1 - local.get $4 - i32.store - local.get $1 - i32.const 4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl i32.add - local.set $1 - else local.get $5 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $5 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end + i32.store offset=4 end - local.get $2 - i32.const 4 + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 i32.add - local.set $2 + local.set $4 br $repeat|0 unreachable end unreachable end - local.get $1 - global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $5 - i32.load - call $~lib/rt/pure/scan - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - block $break|2 - local.get $0 - local.set $5 - loop $repeat|2 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $5 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/__instanceof (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $3 local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory i32.const 16 - i32.sub - i32.load offset=8 - local.set $2 - global.get $~lib/rt/RTTI_BASE - local.set $3 - local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/__typeinfo (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/rt/RTTI_BASE - local.set $1 + (local $2 i32) local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + i32.const 1073741808 + i32.ge_u if i32.const 72 - i32.const 128 - i32.const 23 - i32.const 34 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $start (; 15 ;) (type $FUNCSIG$v) - call $start:rc/rereturn - ) - (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 103 - i32.const 2 + i32.const 24 + i32.const 446 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - i32.const 1 + i32.const 15 i32.add - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 + i32.const 15 + i32.const -1 + i32.xor i32.and - i32.eqz + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end i32.eqz if i32.const 0 - i32.const 168 - i32.const 106 + i32.const 24 + i32.const 336 i32.const 13 call $~lib/builtins/abort unreachable end - ) - (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz if local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 i32.const 16 i32.sub - call $~lib/rt/pure/increment + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store end - local.get $0 ) - (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1259,6 +1585,327 @@ end end ) + (func $~lib/rt/tlsf/reallocateBlock (; 12 ;) (type $FUNCSIG$iiii) (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.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $6 + local.get $6 + i32.load + local.set $7 + local.get $7 + i32.const 1 + i32.and + if + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $5 + local.get $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $8 + local.get $8 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $8 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $8 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $8 + ) + (func $~lib/rt/tlsf/__realloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/tlsf/freeBlock (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/RTTI_BASE + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 176 + i32.const 232 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) @@ -1342,7 +1989,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -1381,7 +2028,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -1437,7 +2084,328 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/__visit (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/markGray (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__collect (; 27 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + local.get $0 + local.set $1 + block $break|0 + block + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + end + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $5 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $1 + local.get $4 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + else + local.get $5 + i32.const 1879048192 + i32.and + i32.const 0 + i32.eq + if (result i32) + local.get $5 + i32.const 268435455 + i32.and + i32.eqz + else + i32.const 0 + end + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $5 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + end + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + global.set $~lib/rt/pure/CUR + block $break|1 + local.get $0 + local.set $5 + loop $repeat|1 + local.get $5 + local.get $1 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $5 + i32.load + call $~lib/rt/pure/scan + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + block $break|2 + local.get $0 + local.set $5 + loop $repeat|2 + local.get $5 + local.get $1 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $5 + i32.load + local.set $4 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + local.get $4 + call $~lib/rt/pure/collectWhite + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/__instanceof (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.set $2 + global.get $~lib/rt/RTTI_BASE + local.set $3 + local.get $2 + local.get $3 + i32.load + i32.le_u + if + loop $continue|0 + local.get $2 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const 8 + i32.mul + i32.add + i32.load offset=4 + local.tee $2 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $rc/rereturn/Ref#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $rc/rereturn/getRef (; 30 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $rc/rereturn/Ref#constructor + ) + (func $rc/rereturn/rereturnRef (; 31 ;) (type $FUNCSIG$i) (result i32) + call $rc/rereturn/getRef + ) + (func $start:rc/rereturn (; 32 ;) (type $FUNCSIG$v) + call $rc/rereturn/rereturnRef + call $~lib/rt/pure/__release + ) + (func $start (; 33 ;) (type $FUNCSIG$v) + call $start:rc/rereturn + ) + (func $~lib/rt/pure/__visit (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1499,7 +2467,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1546,7 +2514,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1583,7 +2551,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -1591,23 +2559,23 @@ end end ) - (func $~lib/rt/__visit_members (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -1617,7 +2585,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -1627,18 +2607,6 @@ end block block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end unreachable unreachable end @@ -1648,767 +2616,6 @@ unreachable end ) - (func $~lib/rt/tlsf/addMemory (; 25 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 24 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $null (; 33 ;) (type $FUNCSIG$v) + (func $null (; 36 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index 64fdc911..4be9bccc 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -1,25 +1,25 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 56) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 104) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 160) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") - (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -27,105 +27,7 @@ (export "test1" (func $rc/ternary-mismatch/test1)) (export "test2" (func $rc/ternary-mismatch/test2)) (start $start) - (func $rc/ternary-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - ) - (func $rc/ternary-mismatch/test1 (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - call $rc/ternary-mismatch/Ref#constructor - else - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - end - ) - (func $rc/ternary-mismatch/test2 (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - else - call $rc/ternary-mismatch/Ref#constructor - end - ) - (func $start:rc/ternary-mismatch (; 7 ;) (type $FUNCSIG$v) - call $rc/ternary-mismatch/Ref#constructor - global.set $rc/ternary-mismatch/gloRef - i32.const 1 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 1 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $start (; 8 ;) (type $FUNCSIG$v) - call $start:rc/ternary-mismatch - ) - (func $~lib/rt/pure/increment (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 400 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -138,7 +40,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -160,7 +62,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -205,7 +107,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -291,7 +193,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -302,7 +204,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -316,7 +218,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -389,7 +291,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -446,7 +348,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -461,7 +363,7 @@ i32.ne if i32.const 0 - i32.const 72 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -511,7 +413,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -576,7 +478,616 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 304 + i32.const 0 + i32.store + i32.const 1872 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 304 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 304 + i32.const 1888 + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 304 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 292 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $rc/ternary-mismatch/Ref#constructor (; 16 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + ) + (func $rc/ternary-mismatch/test1 (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + if (result i32) + call $rc/ternary-mismatch/Ref#constructor + else + global.get $rc/ternary-mismatch/gloRef + call $~lib/rt/pure/__retain + end + ) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -585,7 +1096,7 @@ i32.and if i32.const 0 - i32.const 72 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -602,32 +1113,27 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 256 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 256 + i32.load + i32.gt_u if - i32.const 120 i32.const 176 - i32.const 23 - i32.const 34 + i32.const 232 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 256 + i32.const 260 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -800,7 +1306,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 16 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -836,7 +1342,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -855,7 +1361,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -872,7 +1378,7 @@ i32.and if i32.const 0 - i32.const 24 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -905,7 +1411,7 @@ i32.le_u if i32.const 0 - i32.const 24 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -945,9 +1451,9 @@ end end ) - (func $~lib/rt/pure/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 400 + i32.const 292 i32.gt_u if local.get $0 @@ -956,7 +1462,37 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $rc/ternary-mismatch/test2 (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + if (result i32) + global.get $rc/ternary-mismatch/gloRef + call $~lib/rt/pure/__retain + else + call $rc/ternary-mismatch/Ref#constructor + end + ) + (func $start:rc/ternary-mismatch (; 26 ;) (type $FUNCSIG$v) + call $rc/ternary-mismatch/Ref#constructor + global.set $rc/ternary-mismatch/gloRef + i32.const 1 + call $rc/ternary-mismatch/test1 + call $~lib/rt/pure/__release + i32.const 0 + call $rc/ternary-mismatch/test1 + call $~lib/rt/pure/__release + i32.const 1 + call $rc/ternary-mismatch/test2 + call $~lib/rt/pure/__release + i32.const 0 + call $rc/ternary-mismatch/test2 + call $~lib/rt/pure/__release + global.get $rc/ternary-mismatch/gloRef + call $~lib/rt/pure/__release + ) + (func $start (; 27 ;) (type $FUNCSIG$v) + call $start:rc/ternary-mismatch + ) + (func $~lib/rt/pure/markGray (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -980,7 +1516,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -993,7 +1529,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1027,7 +1563,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1055,9 +1591,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 400 + i32.const 292 i32.lt_u if return @@ -1100,7 +1636,7 @@ i32.le_u if i32.const 0 - i32.const 24 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1133,7 +1669,7 @@ i32.ne if i32.const 0 - i32.const 24 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1158,578 +1694,36 @@ br $break|0 end i32.const 0 - i32.const 24 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - unreachable + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/tlsf/addMemory (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 27 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 400 - i32.const 0 - i32.store - i32.const 1968 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 400 - i32.const 1984 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 400 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 72 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 72 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 72 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add + unreachable ) (func $null (; 34 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index eedc8d9f..30ca8d76 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -1,155 +1,38 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 56) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 104) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 160) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 256) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 256) "\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $rc/ternary-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 256)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 400)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 292)) (export "memory" (memory $0)) (export "test1" (func $rc/ternary-mismatch/test1)) (export "test2" (func $rc/ternary-mismatch/test2)) (start $start) - (func $rc/ternary-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/ternary-mismatch/getRef (; 5 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - call $rc/ternary-mismatch/Ref#constructor - ) - (func $rc/ternary-mismatch/test1 (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - call $rc/ternary-mismatch/getRef - else - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - end - ) - (func $rc/ternary-mismatch/test2 (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__retain - else - call $rc/ternary-mismatch/getRef - end - ) - (func $start:rc/ternary-mismatch (; 8 ;) (type $FUNCSIG$v) - i32.const 0 - call $rc/ternary-mismatch/Ref#constructor - global.set $rc/ternary-mismatch/gloRef - i32.const 1 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test1 - call $~lib/rt/pure/__release - i32.const 1 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - i32.const 0 - call $rc/ternary-mismatch/test2 - call $~lib/rt/pure/__release - global.get $rc/ternary-mismatch/gloRef - call $~lib/rt/pure/__release - ) - (func $start (; 9 ;) (type $FUNCSIG$v) - call $start:rc/ternary-mismatch - ) - (func $~lib/rt/pure/increment (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/removeBlock (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -169,7 +52,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -194,7 +77,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -246,7 +129,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -291,7 +174,7 @@ end i32.eq if - block $~lib/rt/tlsf/SETHEAD|inlined.0 + block $~lib/rt/tlsf/SETHEAD|inlined.1 local.get $0 local.set $11 local.get $4 @@ -328,7 +211,7 @@ i32.load offset=4 end local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 + block $~lib/rt/tlsf/SETSL|inlined.1 local.get $0 local.set $11 local.get $4 @@ -367,7 +250,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -384,7 +267,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -399,7 +282,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -498,7 +381,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -561,7 +444,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -577,7 +460,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -634,7 +517,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -671,7 +554,7 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 + block $~lib/rt/tlsf/SETHEAD|inlined.2 local.get $0 local.set $12 local.get $9 @@ -700,7 +583,7 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 + block $~lib/rt/tlsf/SETSL|inlined.2 local.get $0 local.set $3 local.get $9 @@ -731,7 +614,856 @@ i32.store offset=4 end ) - (func $~lib/rt/tlsf/freeBlock (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (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 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $rc/ternary-mismatch/Ref#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $rc/ternary-mismatch/getRef (; 17 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + call $rc/ternary-mismatch/Ref#constructor + ) + (func $rc/ternary-mismatch/test1 (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + if (result i32) + call $rc/ternary-mismatch/getRef + else + global.get $rc/ternary-mismatch/gloRef + call $~lib/rt/pure/__retain + end + ) + (func $~lib/rt/tlsf/freeBlock (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -743,7 +1475,7 @@ i32.eqz if i32.const 0 - i32.const 72 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -760,36 +1492,32 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if - i32.const 120 i32.const 176 - i32.const 23 - i32.const 34 + i32.const 232 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -995,7 +1723,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 17 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 22 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1040,7 +1768,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -1060,7 +1788,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1080,7 +1808,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -1119,7 +1847,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -1164,7 +1892,7 @@ end end ) - (func $~lib/rt/pure/__release (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.get $~lib/heap/HEAP_BASE i32.gt_u @@ -1175,7 +1903,38 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/rt/pure/markGray (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $rc/ternary-mismatch/test2 (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + if (result i32) + global.get $rc/ternary-mismatch/gloRef + call $~lib/rt/pure/__retain + else + call $rc/ternary-mismatch/getRef + end + ) + (func $start:rc/ternary-mismatch (; 27 ;) (type $FUNCSIG$v) + i32.const 0 + call $rc/ternary-mismatch/Ref#constructor + global.set $rc/ternary-mismatch/gloRef + i32.const 1 + call $rc/ternary-mismatch/test1 + call $~lib/rt/pure/__release + i32.const 0 + call $rc/ternary-mismatch/test1 + call $~lib/rt/pure/__release + i32.const 1 + call $rc/ternary-mismatch/test2 + call $~lib/rt/pure/__release + i32.const 0 + call $rc/ternary-mismatch/test2 + call $~lib/rt/pure/__release + global.get $rc/ternary-mismatch/gloRef + call $~lib/rt/pure/__release + ) + (func $start (; 28 ;) (type $FUNCSIG$v) + call $start:rc/ternary-mismatch + ) + (func $~lib/rt/pure/markGray (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1202,7 +1961,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1219,7 +1978,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1256,7 +2015,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1285,7 +2044,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1347,7 +2106,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1394,7 +2153,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1431,7 +2190,7 @@ i32.eqz if i32.const 0 - i32.const 24 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -1439,23 +2198,23 @@ end end ) - (func $~lib/rt/__visit_members (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -1465,7 +2224,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -1475,18 +2246,6 @@ end block block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end unreachable unreachable end @@ -1496,767 +2255,6 @@ unreachable end ) - (func $~lib/rt/tlsf/addMemory (; 27 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 28 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 72 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 32 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) (func $null (; 35 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index b351045e..cf51f7ae 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -4,8 +4,8 @@ (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$v (func)) (memory $0 0) - (global $resolve-nested/Outer.InnerClass i32 (i32.const 18)) - (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 19)) + (global $resolve-nested/Outer.InnerClass i32 (i32.const 4)) + (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) (export "memory" (memory $0)) (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index 72b4edb3..08e34bd6 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -1,5 +1,7 @@ (module (type $FUNCSIG$viiiiii (func (param i32 i32 i32 i32 i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiiii (func (param i32 i32 i32 i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$v (func)) @@ -20,23 +22,96 @@ (global $resolve-nested/a (mut i32) (i32.const 0)) (global $resolve-nested/b (mut i32) (i32.const 0)) (global $resolve-nested/c (mut i32) (i32.const 0)) - (global $resolve-nested/Outer.InnerClass i32 (i32.const 18)) - (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 19)) + (global $resolve-nested/Outer.InnerClass i32 (i32.const 4)) + (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) (export "memory" (memory $0)) (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) (export "Outer.Inner.evenInner" (func $resolve-nested/Outer.Inner.evenInner)) (export "Outer.inner" (func $resolve-nested/Outer.inner)) (export "outer" (func $resolve-nested/outer)) - (func $resolve-nested/Outer.Inner.evenInner (; 0 ;) (type $FUNCSIG$viiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/rt/stub/__retain (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $resolve-nested/Outer.inner (; 1 ;) (type $FUNCSIG$viiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - nop + (func $resolve-nested/Outer.Inner.evenInner (; 2 ;) (type $FUNCSIG$viiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release ) - (func $resolve-nested/outer (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - nop + (func $resolve-nested/Outer.inner (; 3 ;) (type $FUNCSIG$viiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release ) - (func $null (; 3 ;) (type $FUNCSIG$v) + (func $resolve-nested/outer (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + ) + (func $null (; 5 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat index 5a77a5e2..b85b2623 100644 --- a/tests/compiler/retain-i32.optimized.wat +++ b/tests/compiler/retain-i32.optimized.wat @@ -3,8 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a") - (data (i32.const 24) "r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") (global $retain-i32/si (mut i32) (i32.const 0)) (global $retain-i32/ui (mut i32) (i32.const 0)) (export "memory" (memory $0)) diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index 93dd7604..8dd06a47 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) @@ -406,48 +406,46 @@ local.set $0 loop $repeat|0 local.get $0 - global.get $~lib/builtins/u8.MAX_VALUE + i32.const 255 i32.le_s i32.eqz br_if $break|0 - block - i32.const 0 - local.get $0 - call $retain-i32/test - i32.const 1 - local.get $0 - call $retain-i32/test - i32.const -1 - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i8.MIN_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i8.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/u8.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i16.MIN_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i16.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/u16.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i32.MAX_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/i32.MIN_VALUE - local.get $0 - call $retain-i32/test - global.get $~lib/builtins/u32.MAX_VALUE - local.get $0 - call $retain-i32/test - end + i32.const 0 + local.get $0 + call $retain-i32/test + i32.const 1 + local.get $0 + call $retain-i32/test + i32.const -1 + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/i8.MIN_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/i8.MAX_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/u8.MAX_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/i16.MIN_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/i16.MAX_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/u16.MAX_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/i32.MAX_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/i32.MIN_VALUE + local.get $0 + call $retain-i32/test + global.get $~lib/builtins/u32.MAX_VALUE + local.get $0 + call $retain-i32/test local.get $0 i32.const 1 i32.add diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 1d4dd54d..446da244 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -8,24 +8,30 @@ (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 112) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") - (data (i32.const 168) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 220) "\01\00\00\00\10") - (data (i32.const 232) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a") - (data (i32.const 256) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b") - (data (i32.const 280) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 304) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00d") - (data (i32.const 328) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00I\04\00\00\0e") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 360) "\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 408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data (i32.const 456) "^\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 572) "\01\00\00\00\01") + (data (i32.const 584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 608) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 656) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") + (data (i32.const 680) "\05\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\02\00\00\00I\04\00\00\02") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "main" (func $retain-release-sanity/main)) @@ -42,7 +48,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -64,7 +70,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -109,7 +115,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -206,7 +212,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -220,7 +226,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -293,7 +299,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -350,7 +356,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -365,7 +371,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 128 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -415,7 +421,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -501,7 +507,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 384 i32.const 4 call $~lib/builtins/abort @@ -518,7 +524,7 @@ i32.lt_u if i32.const 0 - i32.const 80 + i32.const 128 i32.const 394 i32.const 15 call $~lib/builtins/abort @@ -546,7 +552,7 @@ i32.lt_u if i32.const 0 - i32.const 80 + i32.const 128 i32.const 406 i32.const 4 call $~lib/builtins/abort @@ -614,10 +620,10 @@ if unreachable end - i32.const 480 + i32.const 736 i32.const 0 i32.store - i32.const 2048 + i32.const 2304 i32.const 0 i32.store i32.const 0 @@ -631,7 +637,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 480 + i32.const 736 i32.add i32.const 0 i32.store offset=4 @@ -650,7 +656,7 @@ i32.add i32.const 2 i32.shl - i32.const 480 + i32.const 736 i32.add i32.const 0 i32.store offset=96 @@ -668,13 +674,13 @@ br $repeat|0 end end - i32.const 480 - i32.const 2064 + i32.const 736 + i32.const 2320 current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 480 + i32.const 736 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -682,8 +688,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 0 - i32.const 80 + i32.const 176 + i32.const 128 i32.const 446 i32.const 29 call $~lib/builtins/abort @@ -758,7 +764,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 336 i32.const 13 call $~lib/builtins/abort @@ -810,7 +816,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 349 i32.const 17 call $~lib/builtins/abort @@ -880,7 +886,7 @@ i32.and if i32.const 0 - i32.const 80 + i32.const 128 i32.const 363 i32.const 13 call $~lib/builtins/abort @@ -966,7 +972,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 476 i32.const 15 call $~lib/builtins/abort @@ -981,7 +987,7 @@ i32.lt_u if i32.const 0 - i32.const 80 + i32.const 128 i32.const 478 i32.const 13 call $~lib/builtins/abort @@ -1021,7 +1027,654 @@ i32.const 16 i32.add ) - (func $~lib/memory/memory.fill (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 232 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 724 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/tlsf/freeBlock (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + ) + (func $~lib/rt/__typeinfo (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 680 + i32.load + i32.gt_u + if + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 684 + i32.add + i32.load + ) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 + end + end + end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + local.get $2 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/pure/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 232 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 232 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__retainRelease (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.ne + if + local.get $1 + i32.const 724 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + i32.const 724 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + end + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 24 + i32.const 72 + i32.const 14 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $1 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/tlsf/reallocateBlock (; 24 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.fill (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -1232,660 +1885,10 @@ end end ) - (func $~lib/rt/purerc/increment (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/purerc/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 128 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 480 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - i32.const 0 - i32.const 24 - i32.const 57 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - call $~lib/rt/purerc/__retain - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 268435452 - i32.gt_u - if - i32.const 0 - i32.const 24 - i32.const 14 - i32.const 56 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.tee $2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - i32.const 0 - i32.const 80 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $continue|0 - end - end - loop $continue|1 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $continue|1 - end - end - end - loop $continue|2 - local.get $2 - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $continue|3 - local.get $0 - local.get $2 - i32.add - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - loop $continue|4 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - loop $continue|5 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - ) - (func $~lib/rt/purerc/growRoots (; 21 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/purerc/CUR - global.get $~lib/rt/purerc/ROOTS - local.tee $2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - local.tee $0 - i32.const 256 - local.get $0 - i32.const 256 - i32.gt_u - select - local.tee $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $2 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - global.set $~lib/rt/purerc/ROOTS - local.get $0 - local.get $1 - i32.add - global.set $~lib/rt/purerc/CUR - local.get $0 - local.get $3 - i32.add - global.set $~lib/rt/purerc/END - ) - (func $~lib/rt/purerc/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/purerc/CUR - local.tee $1 - global.get $~lib/rt/purerc/END - i32.ge_u - if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/purerc/CUR - ) - (func $~lib/rt/purerc/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/purerc/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 128 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/builtins/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 128 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - local.tee $3 - if (result i32) - local.get $3 - i32.const 328 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $3 - i32.const 3 - i32.shl - i32.const 328 - i32.add - i32.load - end - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/appendRoot - end - end - end - ) - (func $~lib/rt/purerc/__release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 480 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) - (func $~lib/rt/tlsf/reallocateBlock (; 25 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - i32.const 0 - i32.const 80 - i32.const 491 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - local.get $3 - ) - (func $~lib/rt/tlsf/__realloc (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 552 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 553 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) (func $~lib/array/ensureSize (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop local.get $1 local.get $0 i32.load offset=8 @@ -1898,10 +1901,8 @@ i32.const 268435452 i32.gt_u if - local.get $0 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 184 + i32.const 24 + i32.const 376 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -1928,7 +1929,7 @@ if local.get $0 local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $0 local.get $1 @@ -1938,8 +1939,6 @@ local.get $3 i32.store offset=8 end - local.get $0 - call $~lib/rt/purerc/__release ) (func $~lib/array/Array#push (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) @@ -1972,8 +1971,8 @@ i32.const 1 i32.lt_s if - i32.const 0 - i32.const 184 + i32.const 424 + i32.const 376 i32.const 250 i32.const 20 call $~lib/builtins/abort @@ -1994,37 +1993,22 @@ local.get $1 i32.store offset=12 ) - (func $~lib/rt/purerc/__retainRelease (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__release (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - local.get $1 - i32.ne + i32.const 724 + i32.gt_u if local.get $0 - i32.const 480 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $1 - i32.const 480 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement end - local.get $0 ) (func $~lib/array/Array<~lib/string/String>#push (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) - i32.const 232 - call $~lib/rt/purerc/__retain + i32.const 584 + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 @@ -2041,31 +2025,31 @@ i32.shl i32.add local.tee $1 - i32.const 232 local.get $1 i32.load - call $~lib/rt/purerc/__retainRelease + i32.const 584 + call $~lib/rt/pure/__retainRelease i32.store local.get $0 local.get $2 i32.store offset=12 - i32.const 232 - call $~lib/rt/purerc/__release + i32.const 584 + call $~lib/rt/pure/__release ) (func $~lib/string/String#concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop block (result i32) local.get $1 i32.eqz if - i32.const 296 local.get $1 - call $~lib/rt/purerc/__retainRelease + i32.const 648 + call $~lib/rt/pure/__retainRelease local.set $1 end local.get $1 @@ -2091,17 +2075,18 @@ i32.eqz end if - i32.const 232 - call $~lib/rt/purerc/__retain + i32.const 584 + call $~lib/rt/pure/__retain local.set $0 local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 return end local.get $2 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.tee $2 local.get $0 local.get $3 @@ -2112,40 +2097,32 @@ local.get $1 local.get $4 call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/purerc/__retain - local.set $0 local.get $1 - call $~lib/rt/purerc/__release - local.get $0 + call $~lib/rt/pure/__release + local.get $2 ) (func $~lib/string/String.__concat (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 - i32.const 296 + i32.const 648 local.get $0 select local.get $1 call $~lib/string/String#concat - local.tee $2 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release + local.set $2 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $2 ) - (func $~lib/rt/purerc/markGray (; 34 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 34 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2166,10 +2143,10 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -2180,9 +2157,9 @@ i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2199,7 +2176,7 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 @@ -2212,11 +2189,11 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2238,24 +2215,24 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__collect (; 38 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/__collect (; 38 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/purerc/ROOTS + global.get $~lib/rt/pure/ROOTS local.tee $5 local.tee $2 local.set $3 - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.set $0 loop $repeat|0 block $break|0 @@ -2283,7 +2260,7 @@ end if local.get $4 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray local.get $2 local.get $4 i32.store @@ -2321,7 +2298,7 @@ end end local.get $2 - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR local.get $5 local.set $0 loop $repeat|1 @@ -2332,7 +2309,7 @@ br_if $break|1 local.get $0 i32.load - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan local.get $0 i32.const 4 i32.add @@ -2357,7 +2334,7 @@ i32.and i32.store offset=4 local.get $1 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite local.get $0 i32.const 4 i32.add @@ -2366,7 +2343,7 @@ end end local.get $5 - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR ) (func $start:retain-release-sanity (; 39 ;) (type $FUNCSIG$v) (local $0 i32) @@ -2374,9 +2351,9 @@ (local $2 i32) (local $3 i32) i32.const 16 - i32.const 17 + i32.const 3 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 @@ -2386,28 +2363,22 @@ i32.const 3 i32.store offset=12 local.get $0 - call $~lib/rt/purerc/__retain - local.tee $1 call $~lib/array/Array#push - local.get $1 + local.get $0 call $~lib/array/Array#push - local.get $1 + local.get $0 call $~lib/array/Array#pop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - local.set $1 + call $~lib/rt/pure/__release loop $repeat|0 local.get $1 i32.const 10 i32.lt_s if i32.const 16 - i32.const 18 + i32.const 4 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 @@ -2416,9 +2387,6 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 i32.const 0 local.set $2 loop $repeat|1 @@ -2426,7 +2394,7 @@ i32.const 10 i32.lt_s if - local.get $3 + local.get $0 call $~lib/array/Array<~lib/string/String>#push local.get $2 i32.const 1 @@ -2436,9 +2404,7 @@ end end local.get $0 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 i32.const 1 i32.add @@ -2446,26 +2412,26 @@ br $repeat|0 end end - i32.const 248 - call $~lib/rt/purerc/__retain + i32.const 600 + call $~lib/rt/pure/__retain local.tee $0 - i32.const 272 + i32.const 624 call $~lib/string/String.__concat local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.tee $2 - i32.const 320 + i32.const 672 call $~lib/string/String.__concat local.set $3 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release - call $~lib/rt/purerc/__collect + call $~lib/rt/pure/__release + call $~lib/rt/pure/__collect ) (func $retain-release-sanity/main (; 40 ;) (type $FUNCSIG$v) global.get $~lib/started @@ -2476,9 +2442,9 @@ global.set $~lib/started end ) - (func $~lib/rt/purerc/__visit (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 480 + i32.const 724 i32.lt_u if return @@ -2510,7 +2476,7 @@ br $case5|0 end local.get $0 - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement br $break|0 end local.get $0 @@ -2521,7 +2487,7 @@ i32.le_u if i32.const 0 - i32.const 128 + i32.const 232 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -2534,11 +2500,11 @@ i32.sub i32.store offset=4 local.get $0 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray br $break|0 end local.get $0 - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan br $break|0 end local.get $0 @@ -2554,7 +2520,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 232 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -2570,51 +2536,44 @@ i32.and if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack end br $break|0 end local.get $0 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite br $break|0 end i32.const 0 - i32.const 128 + i32.const 232 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/array/Array<~lib/string/String>#__traverse (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 i32.load offset=4 local.tee $2 local.get $0 i32.load offset=8 i32.add - local.set $3 + local.set $0 loop $continue|0 local.get $2 - local.get $3 + local.get $0 i32.lt_u if local.get $2 i32.load - local.tee $0 + local.tee $3 if - local.get $0 + local.get $3 local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - local.get $1 - call $~lib/builtins/__visit_members + call $~lib/rt/pure/__visit end local.get $2 i32.const 4 @@ -2624,89 +2583,34 @@ end end ) - (func $~lib/builtins/__visit_members (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/arraybuffer/ArrayBufferView - block $~lib/number/F64 - block $~lib/number/F32 - block $~lib/number/Bool - block $~lib/number/Usize - block $~lib/number/U64 - block $~lib/number/U32 - block $~lib/number/U16 - block $~lib/number/U8 - block $~lib/number/Isize - block $~lib/number/I64 - block $~lib/number/I32 - block $~lib/number/I16 - block $~lib/number/I8 - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 1 - i32.sub - br_table $~lib/number/I8 $~lib/number/I16 $~lib/number/I32 $~lib/number/I64 $~lib/number/Isize $~lib/number/U8 $~lib/number/U16 $~lib/number/U32 $~lib/number/U64 $~lib/number/Usize $~lib/number/Bool $~lib/number/F32 $~lib/number/F64 $~lib/arraybuffer/ArrayBufferView $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - local.get $1 - call $~lib/builtins/__visit_members - end - return - end - return + (func $~lib/rt/__visit_members (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$4$break + block $switch$1$default + block $switch$1$case$6 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $switch$1$case$6 $switch$1$default end return end local.get $0 - i32.load local.get $1 - call $~lib/rt/purerc/__visit - return + call $~lib/array/Array<~lib/string/String>#__visit_impl + br $block$4$break end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#__traverse - return + call $~lib/rt/pure/__visit end - unreachable ) (func $null (; 44 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 98465e7d..b45be185 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -8,29 +8,35 @@ (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 112) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 168) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 216) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 232) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a\00") - (data (i32.const 256) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b\00") - (data (i32.const 280) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 304) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00d\00") - (data (i32.const 328) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00I\04\00\00\0e\00\00\00") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 360) "\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 408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 456) "^\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 568) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 584) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 608) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 632) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 656) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d\00") + (data (i32.const 680) "\05\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\02\00\00\00I\04\00\00\02\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 328)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 480)) + (global $~lib/rt/RTTI_BASE i32 (i32.const 680)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 724)) (export "memory" (memory $0)) (export "main" (func $retain-release-sanity/main)) (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -53,7 +59,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -78,7 +84,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -130,7 +136,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -155,7 +161,7 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) local.get $0 local.set $10 local.get $4 @@ -268,7 +274,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -283,7 +289,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -382,7 +388,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -445,7 +451,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -461,7 +467,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -518,13 +524,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 258 i32.const 13 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) local.get $0 local.set $3 local.get $9 @@ -585,6 +591,10 @@ i32.or i32.store block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $3 + local.get $9 + local.set $6 block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) local.get $0 local.set $13 @@ -601,13 +611,13 @@ local.get $10 i32.shl i32.or - local.set $3 - local.get $0 - local.get $9 + local.set $7 + local.get $3 + local.get $6 i32.const 2 i32.shl i32.add - local.get $3 + local.get $7 i32.store offset=4 end ) @@ -641,7 +651,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 384 i32.const 4 call $~lib/builtins/abort @@ -666,7 +676,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 394 i32.const 15 call $~lib/builtins/abort @@ -697,7 +707,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 406 i32.const 4 call $~lib/builtins/abort @@ -709,11 +719,7 @@ i32.sub local.set $6 local.get $6 - i32.const 16 - i32.const 16 - i32.add - i32.const 16 - i32.add + i32.const 48 i32.lt_u if i32.const 0 @@ -778,7 +784,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.const 15 i32.add i32.const 15 @@ -927,8 +933,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 0 - i32.const 80 + i32.const 176 + i32.const 128 i32.const 446 i32.const 29 call $~lib/builtins/abort @@ -1022,7 +1028,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 336 i32.const 13 call $~lib/builtins/abort @@ -1047,6 +1053,8 @@ i32.shl i32.and local.set $6 + i32.const 0 + local.set $7 local.get $6 i32.eqz if @@ -1087,13 +1095,13 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 349 i32.const 17 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) local.get $0 local.set $9 local.get $2 @@ -1115,7 +1123,7 @@ local.set $7 end else - block $~lib/rt/tlsf/GETHEAD|inlined.4 (result i32) + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $8 local.get $2 @@ -1205,7 +1213,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 363 i32.const 13 call $~lib/builtins/abort @@ -1220,9 +1228,7 @@ i32.sub local.set $4 local.get $4 - i32.const 16 - i32.const 16 - i32.add + i32.const 32 i32.ge_u if local.get $1 @@ -1316,7 +1322,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 476 i32.const 15 call $~lib/builtins/abort @@ -1334,7 +1340,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 478 i32.const 13 call $~lib/builtins/abort @@ -1378,262 +1384,7 @@ i32.const 16 i32.add ) - (func $~lib/memory/memory.fill (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $2 - i32.const -4 - i32.and - local.set $2 - i32.const -1 - i32.const 255 - i32.div_u - local.get $1 - i32.const 255 - i32.and - i32.mul - local.set $4 - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 12 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 28 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 24 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 20 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.get $4 - i32.store - i32.const 24 - local.get $0 - i32.const 4 - i32.and - i32.add - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $4 - i64.extend_i32_u - local.get $4 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $continue|0 - end - end - end - end - ) - (func $~lib/rt/purerc/increment (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1654,7 +1405,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 232 i32.const 103 i32.const 2 call $~lib/builtins/abort @@ -1666,150 +1417,47 @@ i32.add i32.store offset=4 local.get $0 - call $~lib/rt/purerc/onIncrement + call $~lib/rt/pure/onIncrement local.get $0 i32.load i32.const 1 i32.and i32.eqz i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/tlsf/freeBlock (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz if i32.const 0 i32.const 128 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 1073741808 - i32.gt_u - if - i32.const 0 - i32.const 24 - i32.const 57 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 15 - call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/purerc/__retain - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 0 - i32.const 24 - i32.const 14 - i32.const 56 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $1 - local.get $2 - i32.shl - local.tee $1 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 - local.set $4 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - end - local.get $4 - i32.store - local.get $0 - local.get $4 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/array/Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 80 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -1826,84 +1474,91 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/builtins/RTTI_BASE + global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) + local.get $1 + i32.load + i32.gt_u + if + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load ) - (func $~lib/memory/memory.copy (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz if br $~lib/util/memory/memmove|inlined.0 end - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 block (result i32) - local.get $0 - local.tee $5 + local.get $5 + local.tee $6 i32.const 1 i32.add - local.set $0 - local.get $5 + local.set $5 + local.get $6 end block (result i32) - local.get $1 - local.tee $5 + local.get $4 + local.tee $6 i32.const 1 i32.add - local.set $1 - local.get $5 + local.set $4 + local.get $6 end i32.load8_u i32.store8 @@ -1913,26 +1568,26 @@ end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $0 - local.get $1 + local.get $5 + local.get $4 i64.load i64.store - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 - local.get $0 + local.set $3 + local.get $5 i32.const 8 i32.add - local.set $0 - local.get $1 + local.set $5 + local.get $4 i32.const 8 i32.add - local.set $1 + local.set $4 br $continue|1 end end @@ -1940,64 +1595,64 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if block (result i32) - local.get $0 - local.tee $5 + local.get $5 + local.tee $6 i32.const 1 i32.add - local.set $0 - local.get $5 + local.set $5 + local.get $6 end block (result i32) - local.get $1 - local.tee $5 + local.get $4 + local.tee $6 i32.const 1 i32.add - local.set $1 - local.get $5 + local.set $4 + local.get $6 end i32.load8_u i32.store8 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -2007,19 +1662,19 @@ end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 - local.get $0 - local.get $2 + local.set $3 + local.get $5 + local.get $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i64.load i64.store @@ -2030,16 +1685,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -2050,16 +1705,16 @@ end end ) - (func $~lib/rt/purerc/growRoots (; 23 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/purerc/ROOTS + global.get $~lib/rt/pure/ROOTS local.set $0 - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.get $0 i32.sub local.set $1 @@ -2085,26 +1740,26 @@ local.get $1 call $~lib/memory/memory.copy local.get $5 - global.set $~lib/rt/purerc/ROOTS + global.set $~lib/rt/pure/ROOTS local.get $5 local.get $1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR local.get $5 local.get $4 i32.add - global.set $~lib/rt/purerc/END + global.set $~lib/rt/pure/END ) - (func $~lib/rt/purerc/appendRoot (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.set $1 local.get $1 - global.get $~lib/rt/purerc/END + global.get $~lib/rt/pure/END i32.ge_u if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR local.set $1 end local.get $1 @@ -2113,9 +1768,9 @@ local.get $1 i32.const 1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/purerc/decrement (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2126,7 +1781,7 @@ i32.and local.set $2 local.get $0 - call $~lib/rt/purerc/onDecrement + call $~lib/rt/pure/onDecrement local.get $0 i32.load i32.const 1 @@ -2135,7 +1790,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 232 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -2149,7 +1804,7 @@ i32.const 16 i32.add i32.const 1 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members local.get $1 i32.const -2147483648 i32.and @@ -2174,7 +1829,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 232 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -2182,7 +1837,7 @@ end local.get $0 i32.load offset=8 - call $~lib/rt/common/__typeinfo + call $~lib/rt/__typeinfo i32.const 8 i32.and i32.eqz @@ -2202,7 +1857,7 @@ i32.eqz if local.get $0 - call $~lib/rt/purerc/appendRoot + call $~lib/rt/pure/appendRoot end else local.get $0 @@ -2219,18 +1874,118 @@ end end ) - (func $~lib/rt/purerc/__release (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__retainRelease (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.ne + if + global.get $~lib/heap/HEAP_BASE + local.set $2 + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + end + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u i32.gt_u if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement + i32.const 24 + i32.const 72 + i32.const 14 + i32.const 56 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + block (result i32) + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + end + local.tee $4 + local.get $4 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 ) - (func $~lib/rt/tlsf/reallocateBlock (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/rt/tlsf/reallocateBlock (; 25 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2250,7 +2005,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 491 i32.const 13 call $~lib/builtins/abort @@ -2258,9 +2013,7 @@ end local.get $3 local.get $4 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.le_u if @@ -2367,12 +2120,12 @@ call $~lib/rt/tlsf/onFree local.get $8 ) - (func $~lib/rt/tlsf/__realloc (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 552 i32.const 13 call $~lib/builtins/abort @@ -2392,7 +2145,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 128 i32.const 553 i32.const 2 call $~lib/builtins/abort @@ -2407,14 +2160,274 @@ i32.const 16 i32.add ) - (func $~lib/array/ensureSize (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.get $4 + i32.store8 + local.get $5 + i32.const 2 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 3 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $5 + i32.sub + i32.const 3 + i32.and + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $3 + i32.const -4 + i32.and + local.set $3 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $7 + local.get $5 + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 16 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 20 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 + i32.store + i32.const 24 + local.get $5 + i32.const 4 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $7 + i64.extend_i32_u + local.get $7 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $8 + block $break|0 + loop $continue|0 + local.get $3 + i32.const 32 + i32.ge_u + if + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 + end + end + end + end + ) + (func $~lib/array/ensureSize (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop local.get $0 i32.load offset=8 local.set $3 @@ -2430,17 +2443,11 @@ i32.shr_u i32.gt_u if - local.get $0 - call $~lib/rt/purerc/__release - block - i32.const 0 - i32.const 184 - i32.const 14 - i32.const 47 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 24 + i32.const 376 + i32.const 14 + i32.const 47 + call $~lib/builtins/abort unreachable end local.get $0 @@ -2468,7 +2475,7 @@ if local.get $0 local.get $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $0 local.get $6 @@ -2478,10 +2485,8 @@ local.get $5 i32.store offset=8 end - local.get $0 - call $~lib/rt/purerc/__release ) - (func $~lib/array/Array#push (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2508,7 +2513,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#pop (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2518,8 +2523,8 @@ i32.const 1 i32.lt_s if - i32.const 0 - i32.const 184 + i32.const 424 + i32.const 376 i32.const 250 i32.const 20 call $~lib/builtins/abort @@ -2541,6 +2546,17 @@ i32.store offset=12 local.get $2 ) + (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) (func $~lib/array/Array<~lib/string/String>#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 @@ -2548,9 +2564,9 @@ local.get $0 else i32.const 16 - i32.const 18 + i32.const 4 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 2 @@ -2563,10 +2579,10 @@ local.get $1 if local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block - i32.const 0 - i32.const 184 + i32.const 472 + i32.const 376 i32.const 56 i32.const 20 call $~lib/builtins/abort @@ -2580,41 +2596,12 @@ i32.store offset=12 local.get $0 ) - (func $~lib/rt/purerc/__retainRelease (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.ne - if - global.get $~lib/builtins/HEAP_BASE - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - end - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#push (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.load offset=12 @@ -2635,19 +2622,21 @@ i32.add local.set $4 local.get $4 - local.get $1 local.get $4 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $1 + call $~lib/rt/pure/__retainRelease i32.store local.get $0 local.get $3 i32.store offset=12 - local.get $1 - call $~lib/rt/purerc/__release local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/pure/__release + local.get $4 ) - (func $~lib/string/String#get:length (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -2655,22 +2644,22 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String#concat (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 35 ;) (type $FUNCSIG$iii) (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 $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $1 i32.const 0 i32.eq if - i32.const 296 local.get $1 - call $~lib/rt/purerc/__retainRelease + i32.const 648 + call $~lib/rt/pure/__retainRelease local.set $1 end local.get $0 @@ -2691,17 +2680,18 @@ i32.const 0 i32.eq if - i32.const 232 - call $~lib/rt/purerc/__retain + i32.const 584 + call $~lib/rt/pure/__retain local.set $5 local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $5 return end local.get $4 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $6 local.get $6 local.get $0 @@ -2714,41 +2704,35 @@ local.get $3 call $~lib/memory/memory.copy local.get $6 - call $~lib/rt/purerc/__retain local.set $5 local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 - i32.const 296 + i32.const 648 local.get $0 i32.const 0 i32.ne select local.get $1 call $~lib/string/String#concat - local.tee $2 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release + local.set $2 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $2 ) - (func $~lib/rt/purerc/markGray (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2772,10 +2756,10 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -2790,9 +2774,9 @@ i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2810,7 +2794,7 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 @@ -2825,11 +2809,11 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2852,20 +2836,20 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__collect (; 42 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/__collect (; 41 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/purerc/ROOTS + global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 local.set $1 @@ -2873,7 +2857,7 @@ block local.get $1 local.set $2 - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.set $3 end loop $repeat|0 @@ -2904,7 +2888,7 @@ end if local.get $4 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray local.get $1 local.get $4 i32.store @@ -2950,7 +2934,7 @@ unreachable end local.get $1 - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR block $break|1 local.get $0 local.set $5 @@ -2962,7 +2946,7 @@ br_if $break|1 local.get $5 i32.load - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan local.get $5 i32.const 4 i32.add @@ -2993,7 +2977,7 @@ i32.and i32.store offset=4 local.get $4 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite local.get $5 i32.const 4 i32.add @@ -3004,9 +2988,9 @@ unreachable end local.get $0 - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR ) - (func $start:retain-release-sanity (; 43 ;) (type $FUNCSIG$v) + (func $start:retain-release-sanity (; 42 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -3015,30 +2999,26 @@ i32.const 0 i32.const 3 call $~lib/array/Array#constructor - local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 + local.set $0 + local.get $0 i32.const 123 call $~lib/array/Array#push drop - local.get $1 + local.get $0 i32.const 123 call $~lib/array/Array#push drop - local.get $1 + local.get $0 call $~lib/array/Array#pop drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release end block $break|0 i32.const 0 - local.set $1 + local.set $0 loop $repeat|0 - local.get $1 + local.get $0 i32.const 10 i32.lt_s i32.eqz @@ -3046,71 +3026,67 @@ i32.const 0 i32.const 0 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $0 - call $~lib/rt/purerc/__retain - local.set $2 + local.set $1 block $break|1 i32.const 0 - local.set $3 + local.set $2 loop $repeat|1 - local.get $3 + local.get $2 i32.const 10 i32.lt_s i32.eqz br_if $break|1 - local.get $2 - i32.const 232 + local.get $1 + i32.const 584 call $~lib/array/Array<~lib/string/String>#push drop - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $repeat|1 unreachable end unreachable end - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $repeat|0 unreachable end unreachable end block - i32.const 248 - call $~lib/rt/purerc/__retain - local.set $2 - local.get $2 - i32.const 272 - call $~lib/string/String.__concat - local.tee $0 - call $~lib/rt/purerc/__retain + i32.const 600 + call $~lib/rt/pure/__retain local.set $1 local.get $1 - i32.const 320 + i32.const 624 + call $~lib/string/String.__concat + local.tee $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $2 + i32.const 672 call $~lib/string/String.__concat local.tee $3 drop - local.get $2 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release end - call $~lib/rt/purerc/__collect + call $~lib/rt/pure/__collect ) - (func $retain-release-sanity/main (; 44 ;) (type $FUNCSIG$v) + (func $retain-release-sanity/main (; 43 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -3119,14 +3095,17 @@ global.set $~lib/started end ) - (func $start (; 45 ;) (type $FUNCSIG$v) + (func $start (; 44 ;) (type $FUNCSIG$v) call $start:retain-release-sanity ) - (func $~lib/rt/purerc/__visit (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/rt/pure/__visit (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.lt_u if return @@ -3168,7 +3147,7 @@ end block local.get $2 - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement br $break|0 unreachable end @@ -3184,7 +3163,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 232 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -3197,7 +3176,7 @@ i32.sub i32.store offset=4 local.get $2 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray br $break|0 unreachable end @@ -3205,7 +3184,7 @@ end block local.get $2 - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan br $break|0 unreachable end @@ -3231,7 +3210,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 232 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -3249,7 +3228,7 @@ i32.ne if local.get $2 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack end br $break|0 unreachable @@ -3258,7 +3237,7 @@ end block local.get $2 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite br $break|0 unreachable end @@ -3268,7 +3247,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 232 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -3276,21 +3255,11 @@ end end ) - (func $~lib/array/Array#__traverse (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/array/Array<~lib/string/String>#__traverse (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 i32.load offset=4 local.set $2 local.get $2 @@ -3311,10 +3280,7 @@ if local.get $4 local.get $1 - call $~lib/rt/purerc/__visit - local.get $4 - local.get $1 - call $~lib/builtins/__visit_members + call $~lib/rt/pure/__visit end local.get $2 i32.const 4 @@ -3325,88 +3291,102 @@ end end ) - (func $~lib/builtins/__visit_members (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - block $~lib/arraybuffer/ArrayBufferView - block $~lib/number/F64 - block $~lib/number/F32 - block $~lib/number/Bool - block $~lib/number/Usize - block $~lib/number/U64 - block $~lib/number/U32 - block $~lib/number/U16 - block $~lib/number/U8 - block $~lib/number/Isize - block $~lib/number/I64 - block $~lib/number/I32 - block $~lib/number/I16 - block $~lib/number/I8 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $invalid $~lib/number/I8 $~lib/number/I16 $~lib/number/I32 $~lib/number/I64 $~lib/number/Isize $~lib/number/U8 $~lib/number/U16 $~lib/number/U32 $~lib/number/U64 $~lib/number/Usize $~lib/number/Bool $~lib/number/F32 $~lib/number/F64 $~lib/arraybuffer/ArrayBufferView $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - return - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - local.get $2 - local.get $1 - call $~lib/builtins/__visit_members - end - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/array/Array#__traverse - return + block $block$4$break + block end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__traverse - return + block $switch$1$leave + block $switch$1$default + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$default + end + block + block + return + unreachable + end + unreachable + unreachable + end + unreachable + end + block + br $block$4$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$4$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit_impl + block + br $block$4$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + end + block + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable + unreachable end unreachable ) - (func $null (; 50 ;) (type $FUNCSIG$v) + (func $null (; 49 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index fb250b52..6aed9132 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -1,21 +1,22 @@ (module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00e\00r\00r\00o\00r") - (data (i32.const 40) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s") + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") + (data (i32.const 40) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $retain-release/receiveRef) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $retain-release/REF (mut i32) (i32.const 0)) (global $retain-release/glo (mut i32) (i32.const 0)) (global $retain-release/TARGET (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "returnRef" (func $retain-release/returnRef)) (export "receiveRef" (func $retain-release/receiveRef)) @@ -52,86 +53,7 @@ (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirect)) (start $start) - (func $retain-release/Ref#constructor (; 1 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - i32.const 17 - call $~lib/rt/stub/__alloc - ) - (func $retain-release/returnRef (; 2 ;) (type $FUNCSIG$i) (result i32) - global.get $retain-release/REF - ) - (func $retain-release/receiveRef (; 3 ;) (type $FUNCSIG$v) - nop - ) - (func $retain-release/takeRef (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $retain-release/takeReturnRef (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - ) - (func $retain-release/newRef (; 6 ;) (type $FUNCSIG$v) - call $retain-release/Ref#constructor - drop - ) - (func $retain-release/assignGlobal (; 7 ;) (type $FUNCSIG$v) - global.get $retain-release/REF - global.set $retain-release/glo - ) - (func $retain-release/assignField (; 8 ;) (type $FUNCSIG$v) - (local $0 i32) - global.get $retain-release/TARGET - local.tee $0 - i32.load - drop - local.get $0 - global.get $retain-release/REF - i32.store - ) - (func $retain-release/scopeThrow (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - if - i32.const 24 - i32.const 56 - i32.const 313 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - ) - (func $retain-release/scopeUnreachable (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - if - unreachable - end - ) - (func $retain-release/provideRefIndirect (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 1 - global.set $~lib/argc - global.get $retain-release/REF - local.get $0 - call_indirect (type $FUNCSIG$vi) - ) - (func $retain-release/receiveRefIndirect (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) - drop - ) - (func $start (; 13 ;) (type $FUNCSIG$v) - (local $0 i32) - call $retain-release/Ref#constructor - global.set $retain-release/REF - i32.const 4 - i32.const 18 - call $~lib/rt/stub/__alloc - local.tee $0 - i32.const 0 - i32.store - local.get $0 - global.set $retain-release/TARGET - ) - (func $~lib/rt/stub/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -205,4 +127,87 @@ i32.store offset=12 local.get $3 ) + (func $retain-release/Ref#constructor (; 2 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + i32.const 3 + call $~lib/rt/stub/__alloc + ) + (func $retain-release/returnRef (; 3 ;) (type $FUNCSIG$i) (result i32) + global.get $retain-release/REF + ) + (func $retain-release/receiveRef (; 4 ;) (type $FUNCSIG$v) + nop + ) + (func $retain-release/takeRef (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $retain-release/takeReturnRef (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $retain-release/newRef (; 7 ;) (type $FUNCSIG$v) + call $retain-release/Ref#constructor + drop + ) + (func $retain-release/assignGlobal (; 8 ;) (type $FUNCSIG$v) + global.get $retain-release/REF + global.set $retain-release/glo + ) + (func $retain-release/assignField (; 9 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $retain-release/TARGET + local.tee $0 + i32.load + drop + local.get $0 + global.get $retain-release/REF + i32.store + ) + (func $retain-release/scopeThrow (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + if + i32.const 24 + i32.const 56 + i32.const 313 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + ) + (func $retain-release/scopeUnreachable (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + if + unreachable + end + ) + (func $retain-release/provideRefIndirect (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) + i32.const 1 + global.set $~lib/argc + global.get $retain-release/REF + local.get $0 + call_indirect (type $FUNCSIG$vi) + ) + (func $retain-release/receiveRefIndirect (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + drop + ) + (func $start (; 14 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 96 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset + call $retain-release/Ref#constructor + global.set $retain-release/REF + i32.const 4 + i32.const 4 + call $~lib/rt/stub/__alloc + local.tee $0 + i32.const 0 + i32.store + local.get $0 + global.set $retain-release/TARGET + ) ) diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index c07d7eb9..ecb167b8 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -1,22 +1,22 @@ (module + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") - (data (i32.const 40) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s\00") + (data (i32.const 8) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r\00") + (data (i32.const 40) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $retain-release/REF (mut i32) (i32.const 0)) (global $retain-release/glo (mut i32) (i32.const 0)) (global $retain-release/TARGET (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/heap/HEAP_BASE i32 (i32.const 92)) (export "memory" (memory $0)) (export "returnRef" (func $retain-release/returnRef)) @@ -54,418 +54,7 @@ (export "receiveRefIndirect" (func $retain-release/receiveRefIndirect)) (export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirectDrop)) (start $start) - (func $retain-release/Ref#constructor (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 17 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $retain-release/Target#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 18 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $start:retain-release (; 3 ;) (type $FUNCSIG$v) - i32.const 0 - call $retain-release/Ref#constructor - global.set $retain-release/REF - i32.const 0 - call $retain-release/Target#constructor - global.set $retain-release/TARGET - ) - (func $retain-release/returnRef (; 4 ;) (type $FUNCSIG$i) (result i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - ) - (func $retain-release/receiveRef (; 5 ;) (type $FUNCSIG$v) - (local $0 i32) - call $retain-release/returnRef - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefDrop (; 6 ;) (type $FUNCSIG$v) - call $retain-release/returnRef - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefRetain (; 7 ;) (type $FUNCSIG$v) - (local $0 i32) - call $retain-release/returnRef - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/takeRef (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRef (; 9 ;) (type $FUNCSIG$v) - global.get $retain-release/REF - call $retain-release/takeRef - ) - (func $retain-release/takeReturnRef (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - ) - (func $retain-release/provideReceiveRef (; 11 ;) (type $FUNCSIG$v) - (local $0 i32) - global.get $retain-release/REF - call $retain-release/takeReturnRef - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/newRef (; 12 ;) (type $FUNCSIG$v) - i32.const 0 - call $retain-release/Ref#constructor - call $~lib/rt/stub/__release - ) - (func $retain-release/assignGlobal (; 13 ;) (type $FUNCSIG$v) - global.get $retain-release/REF - global.get $retain-release/glo - call $~lib/rt/stub/__retainRelease - global.set $retain-release/glo - ) - (func $retain-release/assignField (; 14 ;) (type $FUNCSIG$v) - (local $0 i32) - global.get $retain-release/TARGET - local.tee $0 - global.get $retain-release/REF - local.get $0 - i32.load - call $~lib/rt/stub/__retainRelease - i32.store - ) - (func $retain-release/scopeBlock (; 15 ;) (type $FUNCSIG$v) - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToUninitialized (; 16 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - local.set $0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.get $0 - call $~lib/rt/stub/__retainRelease - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToInitialized (; 17 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - local.get $0 - call $~lib/rt/stub/__retainRelease - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeBlockToConditional (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - local.set $1 - local.get $0 - if - global.get $retain-release/REF - local.get $1 - call $~lib/rt/stub/__retainRelease - local.set $1 - end - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/stub/__retainRelease - local.set $1 - local.get $2 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelUninitialized (; 19 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelInitialized (; 20 ;) (type $FUNCSIG$v) - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeTopLevelConditional (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - i32.const 0 - local.set $1 - local.get $0 - if - global.get $retain-release/REF - local.get $1 - call $~lib/rt/stub/__retainRelease - local.set $1 - end - local.get $1 - call $~lib/rt/stub/__release - ) - (func $retain-release/scopeIf (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - ) - (func $retain-release/scopeIfElse (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - else - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - ) - (func $retain-release/scopeWhile (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - loop $continue|0 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - br $continue|0 - end - end - ) - (func $retain-release/scopeDo (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - loop $continue|0 - block - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - local.get $0 - br_if $continue|0 - end - ) - (func $retain-release/scopeFor (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - block $break|0 - loop $repeat|0 - local.get $0 - i32.eqz - br_if $break|0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - br $repeat|0 - unreachable - end - unreachable - end - ) - (func $retain-release/scopeBreak (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - block $break|0 - loop $continue|0 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - br $break|0 - end - end - end - ) - (func $retain-release/scopeContinue (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - loop $continue|0 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - br $continue|0 - end - end - ) - (func $retain-release/scopeThrow (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - loop $continue|0 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - block - i32.const 24 - i32.const 56 - i32.const 313 - i32.const 4 - call $~lib/builtins/abort - unreachable - unreachable - end - unreachable - end - end - ) - (func $retain-release/scopeUnreachable (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - loop $continue|0 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - unreachable - local.get $1 - call $~lib/rt/stub/__release - br $continue|0 - end - end - ) - (func $retain-release/callInline (; 31 ;) (type $FUNCSIG$v) - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRefInline (; 32 ;) (type $FUNCSIG$v) - (local $0 i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefInline (; 33 ;) (type $FUNCSIG$v) - (local $0 i32) - block $retain-release/returnRefInline|inlined.0 (result i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - end - local.tee $0 - i32.eqz - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefInlineDrop (; 34 ;) (type $FUNCSIG$v) - block $retain-release/returnRefInline|inlined.1 (result i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - end - call $~lib/rt/stub/__release - ) - (func $retain-release/provideRefIndirect (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 1 - global.set $~lib/argc - global.get $retain-release/REF - local.get $0 - call_indirect (type $FUNCSIG$vi) - ) - (func $retain-release/receiveRefIndirect (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) - local.tee $1 - end - i32.eqz - drop - local.get $1 - call $~lib/rt/stub/__release - ) - (func $retain-release/receiveRefIndirectDrop (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) - call $~lib/rt/stub/__release - ) - (func $start (; 38 ;) (type $FUNCSIG$v) - call $start:retain-release - ) - (func $~lib/rt/stub/__alloc (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -557,15 +146,436 @@ i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__retainRelease (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $retain-release/Ref#constructor (; 3 ;) (type $FUNCSIG$ii) (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 $~lib/rt/stub/__release (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $retain-release/Target#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + ) + (func $start:retain-release (; 5 ;) (type $FUNCSIG$v) + 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 $retain-release/Ref#constructor + global.set $retain-release/REF + i32.const 0 + call $retain-release/Target#constructor + global.set $retain-release/TARGET + ) + (func $retain-release/returnRef (; 6 ;) (type $FUNCSIG$i) (result i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + ) + (func $~lib/rt/stub/__release (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) + (func $retain-release/receiveRef (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + call $retain-release/returnRef + local.tee $0 + i32.eqz + drop + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/receiveRefDrop (; 9 ;) (type $FUNCSIG$v) + call $retain-release/returnRef + call $~lib/rt/stub/__release + ) + (func $retain-release/receiveRefRetain (; 10 ;) (type $FUNCSIG$v) + (local $0 i32) + call $retain-release/returnRef + local.set $0 + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/takeRef (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/provideRef (; 12 ;) (type $FUNCSIG$v) + global.get $retain-release/REF + call $retain-release/takeRef + ) + (func $retain-release/takeReturnRef (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + ) + (func $retain-release/provideReceiveRef (; 14 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $retain-release/REF + call $retain-release/takeReturnRef + local.tee $0 + i32.eqz + drop + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/newRef (; 15 ;) (type $FUNCSIG$v) + i32.const 0 + call $retain-release/Ref#constructor + call $~lib/rt/stub/__release + ) + (func $~lib/rt/stub/__retainRelease (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $retain-release/assignGlobal (; 17 ;) (type $FUNCSIG$v) + global.get $retain-release/glo + global.get $retain-release/REF + call $~lib/rt/stub/__retainRelease + global.set $retain-release/glo + ) + (func $retain-release/assignField (; 18 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $retain-release/TARGET + local.tee $0 + local.get $0 + i32.load + global.get $retain-release/REF + call $~lib/rt/stub/__retainRelease + i32.store + ) + (func $retain-release/scopeBlock (; 19 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $0 + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/scopeBlockToUninitialized (; 20 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retainRelease + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/scopeBlockToInitialized (; 21 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $0 + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + local.get $1 + call $~lib/rt/stub/__retainRelease + local.set $0 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/scopeBlockToConditional (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + local.set $1 + local.get $0 + if + local.get $1 + global.get $retain-release/REF + call $~lib/rt/stub/__retainRelease + local.set $1 + end + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + local.get $2 + call $~lib/rt/stub/__retainRelease + local.set $1 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + ) + (func $retain-release/scopeTopLevelUninitialized (; 23 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 0 + local.set $0 + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/scopeTopLevelInitialized (; 24 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $0 + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/scopeTopLevelConditional (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + i32.const 0 + local.set $1 + local.get $0 + if + local.get $1 + global.get $retain-release/REF + call $~lib/rt/stub/__retainRelease + local.set $1 + end + local.get $1 + call $~lib/rt/stub/__release + ) + (func $retain-release/scopeIf (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + end + ) + (func $retain-release/scopeIfElse (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + else + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + end + ) + (func $retain-release/scopeWhile (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + loop $continue|0 + local.get $0 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + br $continue|0 + end + end + ) + (func $retain-release/scopeDo (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + loop $continue|0 + block + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + end + local.get $0 + br_if $continue|0 + end + ) + (func $retain-release/scopeFor (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + block $break|0 + loop $repeat|0 + local.get $0 + i32.eqz + br_if $break|0 + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + br $repeat|0 + unreachable + end + unreachable + end + ) + (func $retain-release/scopeBreak (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + block $break|0 + loop $continue|0 + local.get $0 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + br $break|0 + end + end + end + ) + (func $retain-release/scopeContinue (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + loop $continue|0 + local.get $0 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + br $continue|0 + end + end + ) + (func $retain-release/scopeThrow (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + loop $continue|0 + local.get $0 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + block + i32.const 24 + i32.const 56 + i32.const 313 + i32.const 4 + call $~lib/builtins/abort + unreachable + unreachable + end + unreachable + end + end + ) + (func $retain-release/scopeUnreachable (; 34 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + loop $continue|0 + local.get $0 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + unreachable + local.get $1 + call $~lib/rt/stub/__release + br $continue|0 + end + end + ) + (func $retain-release/callInline (; 35 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $0 + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/provideRefInline (; 36 ;) (type $FUNCSIG$v) + (local $0 i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $0 + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/receiveRefInline (; 37 ;) (type $FUNCSIG$v) + (local $0 i32) + block $retain-release/returnRefInline|inlined.0 (result i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + end + local.tee $0 + i32.eqz + drop + local.get $0 + call $~lib/rt/stub/__release + ) + (func $retain-release/receiveRefInlineDrop (; 38 ;) (type $FUNCSIG$v) + block $retain-release/returnRefInline|inlined.1 (result i32) + global.get $retain-release/REF + call $~lib/rt/stub/__retain + end + call $~lib/rt/stub/__release + ) + (func $retain-release/provideRefIndirect (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + i32.const 1 + global.set $~lib/argc + global.get $retain-release/REF + local.get $0 + call_indirect (type $FUNCSIG$vi) + ) + (func $retain-release/receiveRefIndirect (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + block (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + local.tee $1 + end + i32.eqz + drop + local.get $1 + call $~lib/rt/stub/__release + ) + (func $retain-release/receiveRefIndirectDrop (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + call $~lib/rt/stub/__release + ) + (func $start (; 42 ;) (type $FUNCSIG$v) + call $start:retain-release + ) (func $null (; 43 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 0f9b512d..5a19d3e0 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1,94 +1,50 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 64) "\10\00\00\00\16") - (data (i32.const 80) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r") - (data (i32.const 104) "\10\00\00\00*") - (data (i32.const 120) "r\00u\00n\00t\00i\00m\00e\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") - (data (i32.const 168) "\10\00\00\00\0e") - (data (i32.const 184) "g\00c\00.\00l\00i\00n\00k") - (data (i32.const 200) "\10\00\00\00\12") - (data (i32.const 216) "g\00c\00.\00u\00n\00l\00i\00n\00k") - (data (i32.const 240) "\10\00\00\00\14") - (data (i32.const 256) "g\00c\00.\00c\00o\00l\00l\00e\00c\00t") - (data (i32.const 280) "\15\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\11\00\00\00\08\00\00\00\12\00\00\00I\00\00\00\0e\00\00\00\08") - (global $gc/_dummy/collect_count (mut i32) (i32.const 0)) - (global $gc/_dummy/register_count (mut i32) (i32.const 0)) - (global $gc/_dummy/register_ref (mut i32) (i32.const 0)) - (global $gc/_dummy/link_count (mut i32) (i32.const 0)) - (global $gc/_dummy/link_ref (mut i32) (i32.const 0)) - (global $gc/_dummy/link_parentRef (mut i32) (i32.const 0)) - (global $gc/_dummy/unlink_count (mut i32) (i32.const 0)) - (global $gc/_dummy/unlink_ref (mut i32) (i32.const 0)) - (global $gc/_dummy/unlink_parentRef (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $runtime/instanceof/animal (mut i32) (i32.const 0)) - (global $runtime/instanceof/cat (mut i32) (i32.const 0)) - (global $runtime/instanceof/blackcat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullableAnimal (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullableCat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullableBlackcat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullAnimal (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullCat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullBlackcat (mut i32) (i32.const 0)) + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data (i32.const 56) "\06\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\08\00\00\00\04") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $rt/instanceof/animal (mut i32) (i32.const 0)) + (global $rt/instanceof/cat (mut i32) (i32.const 0)) + (global $rt/instanceof/blackcat (mut i32) (i32.const 0)) + (global $rt/instanceof/nullableAnimal (mut i32) (i32.const 0)) + (global $rt/instanceof/nullableCat (mut i32) (i32.const 0)) + (global $rt/instanceof/nullableBlackcat (mut i32) (i32.const 0)) + (global $rt/instanceof/nullAnimal i32 (i32.const 0)) + (global $rt/instanceof/nullCat i32 (i32.const 0)) + (global $rt/instanceof/nullBlackcat i32 (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "main" (func $runtime/instanceof/main)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (export "main" (func $rt/instanceof/main)) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset - local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select + (local $4 i32) + global.get $~lib/rt/stub/offset + i32.const 16 i32.add - i32.const 7 - i32.add - i32.const -8 - i32.and - local.tee $0 - current_memory local.tee $2 i32.const 16 + i32.add + i32.const -16 + i32.and + local.tee $1 + current_memory + local.tee $3 + i32.const 16 i32.shl i32.gt_u if - local.get $2 - local.get $0 + local.get $3 local.get $1 + local.get $2 i32.sub i32.const 65535 i32.add @@ -96,16 +52,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 + local.tee $4 local.get $3 + local.get $4 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $4 grow_memory i32.const 0 i32.lt_s @@ -114,133 +70,54 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset local.get $1 - ) - (func $~lib/util/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 i32.store offset=8 local.get $1 i32.const 0 i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - ) - (func $gc/_dummy/__ref_register (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 80 - i32.const 1 - local.get $0 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/register_count - i32.const 1 - i32.add - global.set $gc/_dummy/register_count - local.get $0 - global.set $gc/_dummy/register_ref - ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 456 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $1 - i32.store - local.get $0 - call $gc/_dummy/__ref_register - local.get $0 ) - (func $runtime/instanceof/Animal#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/Animal#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - else - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.eqz + if + i32.const 3 + call $~lib/rt/stub/__alloc + local.set $0 end - ) - (func $runtime/instanceof/Cat#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - else - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + ) + (func $rt/instanceof/Cat#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 4 + call $~lib/rt/stub/__alloc + local.set $0 end - call $runtime/instanceof/Animal#constructor + local.get $0 + call $rt/instanceof/Animal#constructor ) - (func $runtime/instanceof/BlackCat#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register - call $runtime/instanceof/Cat#constructor + (func $rt/instanceof/BlackCat#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) + i32.const 5 + call $~lib/rt/stub/__alloc + call $rt/instanceof/Cat#constructor ) - (func $~lib/runtime/runtime.instanceof (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 16 i32.sub - i32.load + i32.load offset=8 local.tee $0 - if (result i32) - local.get $0 - i32.const 280 - i32.load - i32.le_u - else - i32.const 0 - end + i32.const 56 + i32.load + i32.le_u if loop $continue|0 local.get $0 @@ -253,7 +130,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 280 + i32.const 60 i32.add i32.load offset=4 local.tee $0 @@ -262,627 +139,408 @@ end i32.const 0 ) - (func $start:runtime/instanceof (; 10 ;) (type $FUNCSIG$v) + (func $start:rt/instanceof (; 6 ;) (type $FUNCSIG$v) (local $0 i32) - i32.const 456 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 112 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 - call $runtime/instanceof/Animal#constructor - global.set $runtime/instanceof/animal + call $rt/instanceof/Animal#constructor + global.set $rt/instanceof/animal i32.const 0 - call $runtime/instanceof/Cat#constructor - global.set $runtime/instanceof/cat - call $runtime/instanceof/BlackCat#constructor - global.set $runtime/instanceof/blackcat - global.get $runtime/instanceof/animal + call $rt/instanceof/Cat#constructor + global.set $rt/instanceof/cat + call $rt/instanceof/BlackCat#constructor + global.set $rt/instanceof/blackcat + global.get $rt/instanceof/animal local.tee $0 if (result i32) local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 - i32.const 13 + i32.const 24 + i32.const 10 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/animal + global.get $rt/instanceof/animal local.tee $0 if (result i32) local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 11 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/cat + local.tee $0 + if (result i32) + local.get $0 + i32.const 4 + call $~lib/rt/__instanceof + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/cat + global.get $rt/instanceof/cat local.tee $0 if (result i32) local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof + else + i32.const 0 + end + if + i32.const 0 + i32.const 24 + i32.const 15 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/blackcat + local.tee $0 + if (result i32) + local.get $0 + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end i32.eqz if i32.const 0 - i32.const 120 - i32.const 17 + i32.const 24 + i32.const 18 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/cat + global.get $rt/instanceof/blackcat local.tee $0 if (result i32) local.get $0 + i32.const 5 + call $~lib/rt/__instanceof + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 19 - call $~lib/runtime/runtime.instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 120 - i32.const 18 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/blackcat - local.tee $0 - if (result i32) - local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 21 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/blackcat - local.tee $0 - if (result i32) - local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 22 i32.const 0 call $~lib/builtins/abort unreachable end i32.const 0 - call $runtime/instanceof/Animal#constructor - global.set $runtime/instanceof/nullableAnimal + call $rt/instanceof/Animal#constructor + global.set $rt/instanceof/nullableAnimal i32.const 0 - call $runtime/instanceof/Cat#constructor - global.set $runtime/instanceof/nullableCat - call $runtime/instanceof/BlackCat#constructor - global.set $runtime/instanceof/nullableBlackcat - global.get $runtime/instanceof/nullableAnimal + call $rt/instanceof/Cat#constructor + global.set $rt/instanceof/nullableCat + call $rt/instanceof/BlackCat#constructor + global.set $rt/instanceof/nullableBlackcat + global.get $rt/instanceof/nullableAnimal i32.eqz if i32.const 0 - i32.const 120 - i32.const 28 + i32.const 24 + i32.const 25 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableAnimal + global.get $rt/instanceof/nullableAnimal local.tee $0 if (result i32) local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 26 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullableAnimal + local.tee $0 + if (result i32) + local.get $0 + i32.const 5 + call $~lib/rt/__instanceof + else + i32.const 0 + end + if + i32.const 0 + i32.const 24 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullableCat + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 29 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableAnimal + global.get $rt/instanceof/nullableCat local.tee $0 if (result i32) local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end + i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 30 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableCat - i32.eqz + global.get $rt/instanceof/nullableCat + local.tee $0 + if (result i32) + local.get $0 + i32.const 5 + call $~lib/rt/__instanceof + else + i32.const 0 + end if i32.const 0 - i32.const 120 - i32.const 32 + i32.const 24 + i32.const 31 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableCat - local.tee $0 - if (result i32) - local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof - else - i32.const 0 - end + global.get $rt/instanceof/nullableBlackcat i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 33 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableCat + global.get $rt/instanceof/nullableBlackcat local.tee $0 if (result i32) local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end + i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 34 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableBlackcat - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 36 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullableBlackcat + global.get $rt/instanceof/nullableBlackcat local.tee $0 if (result i32) local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof else i32.const 0 end i32.eqz if i32.const 0 - i32.const 120 - i32.const 37 + i32.const 24 + i32.const 35 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableBlackcat + global.get $rt/instanceof/nullAnimal + if + i32.const 0 + i32.const 24 + i32.const 41 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullAnimal local.tee $0 if (result i32) local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 38 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullAnimal - if - i32.const 0 - i32.const 120 - i32.const 44 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullAnimal - local.tee $0 - if (result i32) - local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 42 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullAnimal + local.tee $0 + if (result i32) + local.get $0 + i32.const 5 + call $~lib/rt/__instanceof + else + i32.const 0 + end + if + i32.const 0 + i32.const 24 + i32.const 43 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullCat + if + i32.const 0 + i32.const 24 i32.const 45 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullAnimal + global.get $rt/instanceof/nullCat local.tee $0 if (result i32) local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 + i32.const 24 i32.const 46 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullCat - if - i32.const 0 - i32.const 120 - i32.const 48 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullCat + global.get $rt/instanceof/nullCat local.tee $0 if (result i32) local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 47 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullBlackcat + if + i32.const 0 + i32.const 24 i32.const 49 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullCat + global.get $rt/instanceof/nullBlackcat local.tee $0 if (result i32) local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 + i32.const 24 i32.const 50 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullBlackcat - if - i32.const 0 - i32.const 120 - i32.const 52 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullBlackcat + global.get $rt/instanceof/nullBlackcat local.tee $0 if (result i32) local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof else i32.const 0 end if i32.const 0 - i32.const 120 - i32.const 53 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullBlackcat - local.tee $0 - if (result i32) - local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof - else - i32.const 0 - end - if - i32.const 0 - i32.const 120 - i32.const 54 + i32.const 24 + i32.const 51 i32.const 0 call $~lib/builtins/abort unreachable end ) - (func $runtime/instanceof/main (; 11 ;) (type $FUNCSIG$v) + (func $rt/instanceof/main (; 7 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if - call $start:runtime/instanceof - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 21 - call $~lib/util/runtime/register - global.set $~lib/runtime/ROOT + call $start:rt/instanceof i32.const 1 global.set $~lib/started end ) - (func $~lib/runtime/runtime.flags (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 280 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 280 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $gc/_dummy/__ref_link (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 184 - i32.const 2 - local.get $0 - f64.convert_i32_u - local.get $1 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/link_count - i32.const 1 - i32.add - global.set $gc/_dummy/link_count - local.get $0 - global.set $gc/_dummy/link_ref - local.get $0 - global.set $gc/_dummy/link_parentRef - ) - (func $gc/_dummy/__ref_unlink (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 216 - i32.const 2 - local.get $0 - f64.convert_i32_u - local.get $1 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/unlink_count - i32.const 1 - i32.add - global.set $gc/_dummy/unlink_count - local.get $0 - global.set $gc/_dummy/unlink_ref - local.get $1 - global.set $gc/_dummy/unlink_parentRef - ) - (func $~lib/runtime/runtime.newArray (; 18 ;) (type $FUNCSIG$iii) (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 - local.tee $3 - if (result i32) - local.get $3 - i32.const 280 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $3 - i32.const 3 - i32.shl - i32.const 280 - i32.add - i32.load - end - local.tee $0 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $6 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $4 - local.get $3 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $2 - local.set $5 - local.get $2 - i32.load - local.tee $3 - local.get $1 - i32.ne - if - local.get $3 - if - local.get $3 - local.get $5 - call $gc/_dummy/__ref_unlink - end - local.get $1 - local.get $5 - call $gc/_dummy/__ref_link - end - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $4 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $6 - i32.shr_u - i32.store offset=12 - local.get $0 - i32.const 1024 - i32.and - if - local.get $1 - local.get $4 - i32.add - local.set $4 - loop $continue|0 - local.get $1 - local.get $4 - i32.lt_u - if - local.get $1 - i32.load - local.tee $0 - if - local.get $0 - local.get $2 - call $gc/_dummy/__ref_link - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $2 - ) - (func $~lib/runtime/runtime.retain (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $gc/_dummy/__ref_link - ) - (func $~lib/runtime/runtime.release (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $gc/_dummy/__ref_unlink - ) - (func $~lib/runtime/runtime.collect (; 21 ;) (type $FUNCSIG$v) - i32.const 256 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/collect_count - i32.const 1 - i32.add - global.set $gc/_dummy/collect_count - ) - (func $null (; 22 ;) (type $FUNCSIG$v) + (func $null (; 8 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index d3bee43c..8d5cf217 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -1,117 +1,75 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 64) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r\00") - (data (i32.const 104) "\10\00\00\00*\00\00\00\00\00\00\00\00\00\00\00r\00u\00n\00t\00i\00m\00e\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") - (data (i32.const 168) "\10\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00l\00i\00n\00k\00") - (data (i32.const 200) "\10\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00u\00n\00l\00i\00n\00k\00") - (data (i32.const 240) "\10\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00g\00c\00.\00c\00o\00l\00l\00e\00c\00t\00") - (data (i32.const 280) "\15\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\11\00\00\00\08\00\00\00\12\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00") + (data (i32.const 56) "\06\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\08\00\00\00\04\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $gc/_dummy/collect_count (mut i32) (i32.const 0)) - (global $gc/_dummy/register_count (mut i32) (i32.const 0)) - (global $gc/_dummy/register_ref (mut i32) (i32.const 0)) - (global $gc/_dummy/link_count (mut i32) (i32.const 0)) - (global $gc/_dummy/link_ref (mut i32) (i32.const 0)) - (global $gc/_dummy/link_parentRef (mut i32) (i32.const 0)) - (global $gc/_dummy/unlink_count (mut i32) (i32.const 0)) - (global $gc/_dummy/unlink_ref (mut i32) (i32.const 0)) - (global $gc/_dummy/unlink_parentRef (mut i32) (i32.const 0)) - (global $gc/_dummy/mark_count (mut i32) (i32.const 0)) - (global $gc/_dummy/mark_ref (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $runtime/instanceof/animal (mut i32) (i32.const 0)) - (global $runtime/instanceof/cat (mut i32) (i32.const 0)) - (global $runtime/instanceof/blackcat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullableAnimal (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullableCat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullableBlackcat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullAnimal (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullCat (mut i32) (i32.const 0)) - (global $runtime/instanceof/nullBlackcat (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $rt/instanceof/animal (mut i32) (i32.const 0)) + (global $rt/instanceof/cat (mut i32) (i32.const 0)) + (global $rt/instanceof/blackcat (mut i32) (i32.const 0)) + (global $rt/instanceof/nullableAnimal (mut i32) (i32.const 0)) + (global $rt/instanceof/nullableCat (mut i32) (i32.const 0)) + (global $rt/instanceof/nullableBlackcat (mut i32) (i32.const 0)) + (global $rt/instanceof/nullAnimal (mut i32) (i32.const 0)) + (global $rt/instanceof/nullCat (mut i32) (i32.const 0)) + (global $rt/instanceof/nullBlackcat (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 280)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 456)) + (global $~lib/rt/RTTI_BASE i32 (i32.const 56)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 108)) (export "memory" (memory $0)) - (export "main" (func $runtime/instanceof/main)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) - (func $~lib/util/runtime/adjust (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (export "main" (func $rt/instanceof/main)) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -121,22 +79,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -145,153 +103,83 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 + i32.sub + local.set $8 + local.get $8 local.get $1 - ) - (func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.store offset=8 + local.get $8 local.get $0 - call $~lib/allocator/arena/__mem_allocate - return + i32.store offset=12 + local.get $2 ) - (func $~lib/util/runtime/allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $rt/instanceof/Animal#constructor (; 3 ;) (type $FUNCSIG$ii) (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 $rt/instanceof/Cat#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $gc/_dummy/__ref_register (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 80 - i32.const 1 - local.get $0 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/register_count - i32.const 1 - i32.add - global.set $gc/_dummy/register_count - local.get $0 - global.set $gc/_dummy/register_ref - ) - (func $~lib/util/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u i32.eqz if i32.const 0 - i32.const 24 - i32.const 129 i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - call $gc/_dummy/__ref_register - local.get $0 - ) - (func $runtime/instanceof/Animal#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 - ) - (func $runtime/instanceof/Cat#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register - local.set $0 - end - local.get $0 - call $runtime/instanceof/Animal#constructor + call $rt/instanceof/Animal#constructor + local.tee $1 local.set $0 local.get $0 ) - (func $runtime/instanceof/BlackCat#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/BlackCat#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 - call $runtime/instanceof/Cat#constructor + call $rt/instanceof/Cat#constructor + local.tee $1 local.set $0 local.get $0 ) - (func $~lib/runtime/runtime.instanceof (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + i32.const 16 i32.sub - i32.load + i32.load offset=8 local.set $2 - global.get $~lib/runtime/RTTI_BASE + global.get $~lib/rt/RTTI_BASE local.set $3 local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end + local.get $3 + i32.load + i32.le_u if loop $continue|0 local.get $2 @@ -302,6 +190,8 @@ return end local.get $3 + i32.const 4 + i32.add local.get $2 i32.const 8 i32.mul @@ -313,509 +203,509 @@ end i32.const 0 ) - (func $start:runtime/instanceof (; 12 ;) (type $FUNCSIG$v) + (func $start:rt/instanceof (; 7 ;) (type $FUNCSIG$v) (local $0 i32) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 - call $runtime/instanceof/Animal#constructor - global.set $runtime/instanceof/animal + call $rt/instanceof/Animal#constructor + global.set $rt/instanceof/animal i32.const 0 - call $runtime/instanceof/Cat#constructor - global.set $runtime/instanceof/cat + call $rt/instanceof/Cat#constructor + global.set $rt/instanceof/cat i32.const 0 - call $runtime/instanceof/BlackCat#constructor - global.set $runtime/instanceof/blackcat + call $rt/instanceof/BlackCat#constructor + global.set $rt/instanceof/blackcat block (result i32) - global.get $runtime/instanceof/animal + global.get $rt/instanceof/animal drop i32.const 1 end i32.eqz if i32.const 0 - i32.const 120 - i32.const 12 + i32.const 24 + i32.const 9 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/animal + global.get $rt/instanceof/animal local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 10 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/animal + local.tee $0 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $0 + i32.const 5 + call $~lib/rt/__instanceof + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 11 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + block (result i32) + global.get $rt/instanceof/cat + drop + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/animal + global.get $rt/instanceof/cat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz - i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable end - block (result i32) - global.get $runtime/instanceof/cat - drop - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 16 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/cat + global.get $rt/instanceof/cat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 15 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + block (result i32) + global.get $rt/instanceof/blackcat + drop + i32.const 1 end i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 17 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/cat + global.get $rt/instanceof/blackcat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz - i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 18 i32.const 0 call $~lib/builtins/abort unreachable end - block (result i32) - global.get $runtime/instanceof/blackcat - drop - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 20 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/blackcat + global.get $rt/instanceof/blackcat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof end i32.eqz if i32.const 0 - i32.const 120 - i32.const 21 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/blackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 + i32.const 24 i32.const 19 - call $~lib/runtime/runtime.instanceof - end - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 22 i32.const 0 call $~lib/builtins/abort unreachable end i32.const 0 - call $runtime/instanceof/Animal#constructor - global.set $runtime/instanceof/nullableAnimal + call $rt/instanceof/Animal#constructor + global.set $rt/instanceof/nullableAnimal i32.const 0 - call $runtime/instanceof/Cat#constructor - global.set $runtime/instanceof/nullableCat + call $rt/instanceof/Cat#constructor + global.set $rt/instanceof/nullableCat i32.const 0 - call $runtime/instanceof/BlackCat#constructor - global.set $runtime/instanceof/nullableBlackcat - global.get $runtime/instanceof/nullableAnimal + call $rt/instanceof/BlackCat#constructor + global.set $rt/instanceof/nullableBlackcat + global.get $rt/instanceof/nullableAnimal i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 120 - i32.const 28 + i32.const 24 + i32.const 25 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableAnimal + global.get $rt/instanceof/nullableAnimal local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 26 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullableAnimal + local.tee $0 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $0 + i32.const 5 + call $~lib/rt/__instanceof + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullableCat + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 29 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableAnimal + global.get $rt/instanceof/nullableCat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz - i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 30 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableCat - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 32 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullableCat + global.get $rt/instanceof/nullableCat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof end i32.eqz + i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 31 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullableBlackcat + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 33 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableCat + global.get $rt/instanceof/nullableBlackcat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz - i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 34 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableBlackcat - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 36 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullableBlackcat + global.get $rt/instanceof/nullableBlackcat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof end i32.eqz if i32.const 0 - i32.const 120 - i32.const 37 + i32.const 24 + i32.const 35 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullableBlackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof - end - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 38 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullAnimal + global.get $rt/instanceof/nullAnimal i32.const 0 i32.ne i32.eqz i32.eqz if i32.const 0 - i32.const 120 - i32.const 44 + i32.const 24 + i32.const 41 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullAnimal + global.get $rt/instanceof/nullAnimal local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 42 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullAnimal + local.tee $0 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $0 + i32.const 5 + call $~lib/rt/__instanceof + end + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 43 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullCat + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 45 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullAnimal + global.get $rt/instanceof/nullCat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 46 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullCat - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 48 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullCat + global.get $rt/instanceof/nullCat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof end i32.eqz i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 + i32.const 47 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $rt/instanceof/nullBlackcat + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 i32.const 49 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullCat + global.get $rt/instanceof/nullBlackcat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof + i32.const 4 + call $~lib/rt/__instanceof end i32.eqz i32.eqz if i32.const 0 - i32.const 120 + i32.const 24 i32.const 50 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $runtime/instanceof/nullBlackcat - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 52 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullBlackcat + global.get $rt/instanceof/nullBlackcat local.tee $0 i32.eqz if (result i32) i32.const 0 else local.get $0 - i32.const 18 - call $~lib/runtime/runtime.instanceof + i32.const 5 + call $~lib/rt/__instanceof end i32.eqz i32.eqz if i32.const 0 - i32.const 120 - i32.const 53 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $runtime/instanceof/nullBlackcat - local.tee $0 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $0 - i32.const 19 - call $~lib/runtime/runtime.instanceof - end - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 54 + i32.const 24 + i32.const 51 i32.const 0 call $~lib/builtins/abort unreachable end ) - (func $runtime/instanceof/main (; 13 ;) (type $FUNCSIG$v) + (func $rt/instanceof/main (; 8 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -824,248 +714,9 @@ global.set $~lib/started end ) - (func $~lib/runtime/runtime.flags (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end + (func $start (; 9 ;) (type $FUNCSIG$v) + call $start:rt/instanceof ) - (func $~lib/runtime/runtime.newObject (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $gc/_dummy/__ref_link (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 184 - i32.const 2 - local.get $0 - f64.convert_i32_u - local.get $1 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/link_count - i32.const 1 - i32.add - global.set $gc/_dummy/link_count - local.get $0 - global.set $gc/_dummy/link_ref - local.get $0 - global.set $gc/_dummy/link_parentRef - ) - (func $gc/_dummy/__ref_unlink (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - i32.const 216 - i32.const 2 - local.get $0 - f64.convert_i32_u - local.get $1 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/unlink_count - i32.const 1 - i32.add - global.set $gc/_dummy/unlink_count - local.get $0 - global.set $gc/_dummy/unlink_ref - local.get $1 - global.set $gc/_dummy/unlink_parentRef - ) - (func $~lib/runtime/runtime.newArray (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.tee $6 - local.get $1 - local.tee $7 - local.get $6 - i32.load - local.tee $8 - i32.ne - if (result i32) - local.get $8 - if - local.get $8 - local.get $6 - call $gc/_dummy/__ref_unlink - end - local.get $7 - local.get $6 - call $gc/_dummy/__ref_link - local.get $7 - else - local.get $7 - end - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $8 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $7 - local.get $7 - if - local.get $7 - local.get $5 - call $gc/_dummy/__ref_link - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 - ) - (func $~lib/runtime/Root#constructor (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 21 - call $~lib/util/runtime/register - local.set $0 - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $gc/_dummy/__ref_link - ) - (func $~lib/runtime/runtime.release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $gc/_dummy/__ref_unlink - ) - (func $gc/_dummy/__ref_collect (; 25 ;) (type $FUNCSIG$v) - i32.const 256 - i32.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $gc/_dummy/collect_count - i32.const 1 - i32.add - global.set $gc/_dummy/collect_count - ) - (func $~lib/runtime/runtime.collect (; 26 ;) (type $FUNCSIG$v) - call $gc/_dummy/__ref_collect - ) - (func $~lib/runtime/runtime#constructor (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 28 ;) (type $FUNCSIG$v) - call $start:runtime/instanceof - i32.const 0 - call $~lib/runtime/Root#constructor - global.set $~lib/runtime/ROOT - ) - (func $null (; 29 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index a51ddc5f..f12d37c1 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -1,53 +1,34 @@ (module - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 56) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 112) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 152) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 256) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 256) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__retain" (func $~lib/rt/pure/__retain)) + (export "__release" (func $~lib/rt/pure/__release)) (export "__collect" (func $~lib/rt/pure/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) - (func $~lib/rt/pure/markGray (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/tlsf/removeBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -213,7 +194,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -498,288 +479,546 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 + (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz if i32.const 0 i32.const 24 - i32.const 530 - i32.const 2 + i32.const 384 + i32.const 4 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub i32.const 1 i32.or + i32.or i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/pure/scanBlack (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) + (local $0 i32) (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq + i32.const 1 + current_memory + local.tee $0 + i32.gt_s if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s else i32.const 0 end if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members + unreachable end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__collect (; 8 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $5 - local.tee $2 - local.set $3 - global.get $~lib/rt/pure/CUR + i32.const 288 + i32.const 0 + i32.store + i32.const 1856 + i32.const 0 + i32.store + i32.const 0 local.set $0 loop $repeat|0 block $break|0 - local.get $3 local.get $0 + i32.const 23 i32.ge_u br_if $break|0 - local.get $3 - i32.load - local.tee $4 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - else - i32.const 0 - local.get $1 - i32.const 268435455 - i32.and - i32.eqz - local.get $1 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.const 288 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 local.get $1 - i32.const 2147483647 - i32.and - i32.store offset=4 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 288 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 end end - local.get $3 - i32.const 4 + local.get $0 + i32.const 1 i32.add - local.set $3 + local.set $0 br $repeat|0 end end - local.get $2 - global.set $~lib/rt/pure/CUR - local.get $5 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|1 - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|1 - end - end - local.get $5 - local.set $0 - loop $repeat|2 - block $break|2 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|2 - local.get $0 - i32.load - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|2 - end - end - local.get $5 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/__instanceof (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 + i32.const 288 + i32.const 1872 + current_memory i32.const 16 - i32.sub - i32.load offset=8 - local.tee $0 - if (result i32) - local.get $0 - i32.const 256 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 256 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 288 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/__typeinfo (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 256 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 1073741808 + i32.ge_u if i32.const 72 - i32.const 128 - i32.const 23 - i32.const 34 + i32.const 24 + i32.const 446 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 3 - i32.shl - i32.const 256 + i32.const 15 i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add ) (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -954,7 +1193,285 @@ end end ) - (func $~lib/rt/pure/growRoots (; 12 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/reallocateBlock (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/tlsf/freeBlock (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 284 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 256 + i32.load + i32.gt_u + if + i32.const 176 + i32.const 232 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 260 + i32.add + i32.load + ) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -990,7 +1507,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -1009,7 +1526,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1024,7 +1541,7 @@ i32.and if i32.const 0 - i32.const 168 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -1057,7 +1574,7 @@ i32.le_u if i32.const 0 - i32.const 168 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -1097,9 +1614,273 @@ end end ) - (func $~lib/rt/pure/__visit (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 392 + i32.const 284 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/rt/pure/markGray (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__collect (; 27 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/pure/CUR + local.set $0 + loop $repeat|0 + block $break|0 + local.get $3 + local.get $0 + i32.ge_u + br_if $break|0 + local.get $3 + i32.load + local.tee $4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $2 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + else + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 + i32.const 1879048192 + i32.and + select + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $1 + i32.const 2147483647 + i32.and + i32.store offset=4 + end + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $repeat|0 + end + end + local.get $2 + global.set $~lib/rt/pure/CUR + local.get $5 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 + local.get $2 + i32.ge_u + br_if $break|1 + local.get $0 + i32.load + call $~lib/rt/pure/scan + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $repeat|1 + end + end + local.get $5 + local.set $0 + loop $repeat|2 + block $break|2 + local.get $0 + local.get $2 + i32.ge_u + br_if $break|2 + local.get $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 2147483647 + i32.and + i32.store offset=4 + local.get $1 + call $~lib/rt/pure/collectWhite + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $repeat|2 + end + end + local.get $5 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/__instanceof (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.tee $0 + i32.const 256 + i32.load + i32.le_u + if + loop $continue|0 + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 3 + i32.shl + i32.const 260 + i32.add + i32.load offset=4 + local.tee $0 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $~lib/rt/pure/__visit (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 284 i32.lt_u if return @@ -1142,7 +1923,7 @@ i32.le_u if i32.const 0 - i32.const 168 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1175,7 +1956,7 @@ i32.ne if i32.const 0 - i32.const 168 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1200,580 +1981,38 @@ br $break|0 end i32.const 0 - i32.const 168 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default end - unreachable + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end + unreachable ) - (func $~lib/rt/tlsf/addMemory (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 24 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 24 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 18 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 400 - i32.const 0 - i32.store - i32.const 1968 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 400 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 400 - i32.const 1984 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 400 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 24 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 24 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 24 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $null (; 25 ;) (type $FUNCSIG$v) + (func $null (; 31 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index a8c3c97d..f82cacf5 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -1,61 +1,38 @@ (module - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 56) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 112) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 152) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 256) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 256) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 256)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 392)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 284)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) + (export "__realloc" (func $~lib/rt/tlsf/__realloc)) + (export "__free" (func $~lib/rt/tlsf/__free)) + (export "__retain" (func $~lib/rt/pure/__retain)) + (export "__release" (func $~lib/rt/pure/__release)) (export "__collect" (func $~lib/rt/pure/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) - (func $~lib/rt/pure/markGray (; 1 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/tlsf/removeBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -197,7 +174,7 @@ end i32.eq if - block $~lib/rt/tlsf/SETHEAD|inlined.0 + block $~lib/rt/tlsf/SETHEAD|inlined.1 local.get $0 local.set $11 local.get $4 @@ -234,7 +211,7 @@ i32.load offset=4 end local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 + block $~lib/rt/tlsf/SETSL|inlined.1 local.get $0 local.set $11 local.get $4 @@ -273,7 +250,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -577,7 +554,7 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 + block $~lib/rt/tlsf/SETHEAD|inlined.2 local.get $0 local.set $12 local.get $9 @@ -606,7 +583,7 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 + block $~lib/rt/tlsf/SETSL|inlined.2 local.get $0 local.set $3 local.get $9 @@ -637,332 +614,768 @@ i32.store offset=4 end ) - (func $~lib/rt/tlsf/freeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (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 local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/scanBlack (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq + i32.le_u if (result i32) local.get $1 - i32.const -2147483648 + i32.const 15 i32.and i32.eqz else i32.const 0 end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 i32.const 16 i32.add - i32.const 5 - call $~lib/rt/__visit_members + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 end - global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/freeBlock + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 ) - (func $~lib/rt/pure/__collect (; 8 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/pure/ROOTS + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and local.set $0 - local.get $0 + current_memory local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end + i32.const 0 + local.set $4 loop $repeat|0 - local.get $2 - local.get $3 + local.get $4 + i32.const 23 i32.lt_u i32.eqz br_if $break|0 - local.get $2 - i32.load - local.set $4 - local.get $4 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 local.get $4 - call $~lib/rt/pure/markGray - local.get $1 - local.get $4 - i32.store - local.get $1 - i32.const 4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl i32.add - local.set $1 - else local.get $5 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $5 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end + i32.store offset=4 end - local.get $2 - i32.const 4 + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 i32.add - local.set $2 + local.set $4 br $repeat|0 unreachable end unreachable end - local.get $1 - global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $5 - i32.load - call $~lib/rt/pure/scan - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - block $break|2 - local.get $0 - local.set $5 - loop $repeat|2 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $5 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/__instanceof (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $3 local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory i32.const 16 - i32.sub - i32.load offset=8 - local.set $2 - global.get $~lib/rt/RTTI_BASE - local.set $3 - local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/__typeinfo (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/rt/RTTI_BASE - local.set $1 + (local $2 i32) local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + i32.const 1073741808 + i32.ge_u if i32.const 72 - i32.const 128 - i32.const 23 - i32.const 34 + i32.const 24 + i32.const 446 + i32.const 29 call $~lib/builtins/abort unreachable end - local.get $1 local.get $0 - i32.const 8 - i32.mul + i32.const 15 i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1170,7 +1583,328 @@ end end ) - (func $~lib/rt/pure/growRoots (; 12 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/reallocateBlock (; 12 ;) (type $FUNCSIG$iiii) (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.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $6 + local.get $6 + i32.load + local.set $7 + local.get $7 + i32.const 1 + i32.and + if + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $5 + local.get $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $8 + local.get $8 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $8 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $8 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $8 + ) + (func $~lib/rt/tlsf/__realloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/tlsf/freeBlock (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/RTTI_BASE + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 176 + i32.const 232 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1215,7 +1949,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -1235,7 +1969,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1253,7 +1987,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -1292,7 +2026,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -1337,7 +2071,313 @@ end end ) - (func $~lib/rt/pure/__visit (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/rt/pure/markGray (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__collect (; 27 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + local.get $0 + local.set $1 + block $break|0 + block + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + end + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $5 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $1 + local.get $4 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + else + local.get $5 + i32.const 1879048192 + i32.and + i32.const 0 + i32.eq + if (result i32) + local.get $5 + i32.const 268435455 + i32.and + i32.eqz + else + i32.const 0 + end + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $5 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + end + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + global.set $~lib/rt/pure/CUR + block $break|1 + local.get $0 + local.set $5 + loop $repeat|1 + local.get $5 + local.get $1 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $5 + i32.load + call $~lib/rt/pure/scan + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + block $break|2 + local.get $0 + local.set $5 + loop $repeat|2 + local.get $5 + local.get $1 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $5 + i32.load + local.set $4 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + local.get $4 + call $~lib/rt/pure/collectWhite + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/__instanceof (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.set $2 + global.get $~lib/rt/RTTI_BASE + local.set $3 + local.get $2 + local.get $3 + i32.load + i32.le_u + if + loop $continue|0 + local.get $2 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const 8 + i32.mul + i32.add + i32.load offset=4 + local.tee $2 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $~lib/rt/pure/__visit (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1399,7 +2439,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -1446,7 +2486,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -1483,7 +2523,7 @@ i32.eqz if i32.const 0 - i32.const 168 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -1491,23 +2531,23 @@ end end ) - (func $~lib/rt/__visit_members (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -1517,7 +2557,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -1527,18 +2579,6 @@ end block block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end unreachable unreachable end @@ -1548,767 +2588,6 @@ unreachable end ) - (func $~lib/rt/tlsf/addMemory (; 17 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 18 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 24 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $null (; 25 ;) (type $FUNCSIG$v) + (func $null (; 31 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index 33e10f0e..b8f2923b 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -1,30 +1,321 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 64) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 104) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") + (data (i32.const 8) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 64) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 104) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) + (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__retain" (func $~lib/rt/stub/__retain)) + (export "__release" (func $~lib/rt/stub/__free)) + (export "__collect" (func $~lib/rt/stub/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) - (func $~lib/rt/__instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (start $start) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 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.tee $3 + local.get $0 + i32.const 1 + local.get $0 + i32.const 1 + i32.gt_u + select + i32.add + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + current_memory + local.tee $4 + i32.const 16 + i32.shl + i32.gt_u + if + local.get $4 + local.get $2 + local.get $3 + i32.sub + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $5 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 + i32.const 16 + i32.sub + local.tee $2 + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 + ) + (func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 + end + end + end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/rt/stub/__realloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=12 + local.tee $3 + i32.gt_u + if + local.get $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.tee $1 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $1 + local.set $0 + else + local.get $2 + local.get $1 + i32.store offset=12 + end + local.get $0 + ) + (func $~lib/rt/stub/__free (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__collect (; 6 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/rt/__instanceof (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=8 local.tee $0 - if (result i32) - local.get $0 - i32.const 104 - i32.load - i32.le_u - else - i32.const 0 - end + i32.const 104 + i32.load + i32.le_u if loop $continue|0 local.get $0 @@ -37,7 +328,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 104 + i32.const 108 i32.add i32.load offset=4 local.tee $0 @@ -46,32 +337,30 @@ end i32.const 0 ) - (func $~lib/rt/__typeinfo (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 104 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 104 + i32.load + i32.gt_u if i32.const 24 i32.const 80 - i32.const 23 - i32.const 34 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 104 + i32.const 108 i32.add i32.load ) - (func $null (; 3 ;) (type $FUNCSIG$v) - nop + (func $start (; 9 ;) (type $FUNCSIG$v) + i32.const 144 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index f5e419eb..75819233 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -1,20 +1,375 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 64) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 104) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 64) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 104) "\03\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 104)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 132)) (export "memory" (memory $0)) + (export "__alloc" (func $~lib/rt/stub/__alloc)) + (export "__realloc" (func $~lib/rt/stub/__realloc)) + (export "__free" (func $~lib/rt/stub/__free)) + (export "__retain" (func $~lib/rt/stub/__retain)) + (export "__release" (func $~lib/rt/stub/__release)) + (export "__collect" (func $~lib/rt/stub/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) - (func $~lib/rt/__instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (start $start) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 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 $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $5 + current_memory + local.set $6 + local.get $5 + local.get $6 + i32.const 16 + i32.shl + i32.gt_u + if + local.get $5 + 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 $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 + i32.gt_s + select + local.set $4 + local.get $4 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + end + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 + i32.sub + local.set $8 + local.get $8 + local.get $1 + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|0 + loop $continue|0 + local.get $5 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 + end + end + end + end + block $break|2 + loop $continue|2 + local.get $3 + if + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|3 + loop $continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + end + block $break|5 + loop $continue|5 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + end + ) + (func $~lib/rt/stub/__realloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 16 + i32.sub + local.set $2 + local.get $2 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $4 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $4 + local.set $0 + else + local.get $2 + local.get $1 + i32.store offset=12 + end + local.get $0 + ) + (func $~lib/rt/stub/__free (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect (; 7 ;) (type $FUNCSIG$v) + nop + ) + (func $~lib/rt/__instanceof (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -25,14 +380,9 @@ global.get $~lib/rt/RTTI_BASE local.set $3 local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end + local.get $3 + i32.load + i32.le_u if loop $continue|0 local.get $2 @@ -43,6 +393,8 @@ return end local.get $3 + i32.const 4 + i32.add local.get $2 i32.const 8 i32.mul @@ -54,35 +406,43 @@ end i32.const 0 ) - (func $~lib/rt/__typeinfo (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if i32.const 24 i32.const 80 - i32.const 23 - i32.const 34 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $null (; 3 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) + 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 + ) + (func $null (; 11 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/simd.optimized.wat b/tests/compiler/simd.optimized.wat index d8503c5c..e558488c 100644 --- a/tests/compiler/simd.optimized.wat +++ b/tests/compiler/simd.optimized.wat @@ -1,7 +1,7 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\11\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s") + (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s") (export "memory" (memory $0)) (func $start (; 0 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/simd.untouched.wat b/tests/compiler/simd.untouched.wat index 35b341fe..74e8c059 100644 --- a/tests/compiler/simd.untouched.wat +++ b/tests/compiler/simd.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\11\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00") + (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) diff --git a/tests/compiler/static-this.optimized.wat b/tests/compiler/static-this.optimized.wat index e0d93835..8a8eb4f0 100644 --- a/tests/compiler/static-this.optimized.wat +++ b/tests/compiler/static-this.optimized.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") (global $static-this/Foo.bar i32 (i32.const 42)) (export "memory" (memory $0)) (start $start) diff --git a/tests/compiler/static-this.untouched.wat b/tests/compiler/static-this.untouched.wat index 66ab3781..f0ff1ce3 100644 --- a/tests/compiler/static-this.untouched.wat +++ b/tests/compiler/static-this.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $static-this/Foo.bar (mut i32) (i32.const 42)) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index abc6c05e..e01f682f 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -2,37 +2,23 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "^\00\00\00\01\00\00\00\10\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 120) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 168) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 224) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 240) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) + (data (i32.const 8) "^\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 120) "\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 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 228) "\01\00\00\00\01") + (data (i32.const 240) "\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 288) "\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)) (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -59,11 +45,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__unchecked_get - ) - (func $~lib/array/Array#__unchecked_get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -72,8 +53,8 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/array/Array#__get (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 1 local.get $0 i32.load offset=8 i32.const 2 @@ -88,172 +69,74 @@ unreachable end local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get + i32.load offset=4 + i32.const 4 + i32.add + i32.load ) - (func $std/array-access/i32ArrayArrayElementAccess (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop + (func $std/array-access/i32ArrayArrayElementAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get - local.tee $1 - i32.const 1 call $~lib/array/Array#__get - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 24 - i32.const 136 - i32.const 97 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 184 - i32.const 136 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__unchecked_get - ) - (func $~lib/string/String#get:length (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayPropertyAccess (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get i32.const 16 i32.sub i32.load offset=12 i32.const 1 i32.shr_u ) - (func $std/array-access/stringArrayPropertyAccess (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (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.get $0 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $5 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $4 - if (result i32) - local.get $6 - i32.load16_u - local.get $7 - i32.load16_u - i32.sub - local.tee $5 - i32.eqz - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end - end - end - local.get $5 - local.set $8 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/string/String#startsWith (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiii) (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) + i32.const 240 + local.set $3 local.get $1 - call $~lib/rt/stub/__retain - drop + i32.const 1 + i32.shl + local.get $0 + i32.add + local.set $1 + loop $continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.load16_u + local.get $3 + i32.load16_u + i32.sub + local.tee $4 + i32.eqz + else + i32.const 0 + end + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $4 + ) + (func $~lib/string/String#startsWith (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.const 0 - i32.ne i32.eqz if i32.const 0 @@ -263,184 +146,66 @@ call $~lib/builtins/abort unreachable end + i32.const 236 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + local.set $2 local.get $1 i32.const 0 - i32.eq - if - i32.const 304 - local.get $1 - call $~lib/rt/stub/__retainRelease - local.set $1 - end - local.get $2 - local.set $3 local.get $0 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - local.tee $5 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $1 i32.const 0 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.tee $5 - local.get $4 - local.tee $6 - local.get $5 - local.get $6 + local.get $1 i32.lt_s select - local.set $7 - local.get $1 - call $~lib/string/String#get:length - local.set $8 - local.get $8 - local.get $7 + local.tee $3 i32.add - local.get $4 + local.get $1 i32.gt_s if i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release - local.get $5 return end local.get $0 - local.get $7 - local.get $1 - i32.const 0 - local.get $8 + local.get $3 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $5 - local.get $1 - call $~lib/rt/stub/__release - local.get $5 ) - (func $std/array-access/stringArrayMethodCall (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop + (func $std/array-access/stringArrayMethodCall (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 240 - i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get call $~lib/string/String#startsWith - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $std/array-access/stringArrayArrayPropertyAccess (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + i32.const 1 + call $~lib/array/Array<~lib/array/Array>#__get + i32.const 16 + i32.sub i32.load offset=12 - i32.ge_u - if - i32.const 24 - i32.const 136 - i32.const 97 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - i32.ge_u - if - i32.const 184 - i32.const 136 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get ) - (func $std/array-access/stringArrayArrayPropertyAccess (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop + (func $std/array-access/stringArrayArrayMethodCall (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $1 + call $~lib/array/Array<~lib/array/Array>#__get i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $std/array-access/stringArrayArrayMethodCall (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 240 - i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get call $~lib/string/String#startsWith - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/rt/stub/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__retainRelease (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $null (; 10 ;) (type $FUNCSIG$v) nop ) - (func $null (; 20 ;) (type $FUNCSIG$v) - ) ) diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index abc6c05e..9ec13490 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -2,18 +2,18 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "^\00\00\00\01\00\00\00\10\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 120) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 168) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 224) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 240) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 8) "^\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 120) "\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 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 224) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 240) "\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 288) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) @@ -22,7 +22,10 @@ (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -32,7 +35,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -63,7 +66,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $~lib/array/Array#__unchecked_get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -72,7 +75,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -91,7 +94,10 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/array-access/i32ArrayArrayElementAccess (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__release (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $std/array-access/i32ArrayArrayElementAccess (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -110,7 +116,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -120,7 +126,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -151,7 +157,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $~lib/string/String#get:length (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -159,7 +165,7 @@ i32.const 1 i32.shr_u ) - (func $std/array-access/stringArrayPropertyAccess (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayPropertyAccess (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -177,7 +183,10 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/rt/stub/__retainRelease (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $~lib/util/string/compareImpl (; 13 ;) (type $FUNCSIG$iiiiii) (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) @@ -241,7 +250,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String#startsWith (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -267,8 +276,8 @@ i32.const 0 i32.eq if - i32.const 304 local.get $1 + i32.const 304 call $~lib/rt/stub/__retainRelease local.set $1 end @@ -321,7 +330,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $std/array-access/stringArrayMethodCall (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayMethodCall (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -341,7 +350,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -351,7 +360,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -382,7 +391,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get ) - (func $std/array-access/stringArrayArrayPropertyAccess (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayPropertyAccess (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -406,7 +415,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $std/array-access/stringArrayArrayMethodCall (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayMethodCall (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -432,15 +441,6 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/rt/stub/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__retainRelease (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) (func $null (; 20 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 99a79046..62165f6b 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -8,24 +8,24 @@ (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 32) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03") - (data (i32.const 64) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 120) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 176) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 224) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 256) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\00\f0\00\00\00\f0\00\00\00\0c\00\00\00\03") - (data (i32.const 292) "\01\00\00\00\0f") - (data (i32.const 304) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\000\01\00\000\01") - (data (i32.const 336) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 384) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 440) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") - (data (i32.const 496) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s") - (data (i32.const 552) "\16\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e") + (data (i32.const 8) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\01\02") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03") + (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 176) "\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 224) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 256) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\f0\00\00\00\f0\00\00\00\0c\00\00\00\03") + (data (i32.const 292) "\01") + (data (i32.const 304) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\000\01\00\000\01") + (data (i32.const 336) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 384) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 440) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 488) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 528) "\t\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\02\00\00\00I\00\00\00\02\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\02\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\02") (global $std/array-literal/emptyArrayI32 i32 (i32.const 320)) (global $std/array-literal/i (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -33,9 +33,9 @@ (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -665,10 +665,10 @@ if unreachable end - i32.const 736 + i32.const 608 i32.const 0 i32.store - i32.const 2304 + i32.const 2176 i32.const 0 i32.store i32.const 0 @@ -682,7 +682,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 736 + i32.const 608 i32.add i32.const 0 i32.store offset=4 @@ -701,7 +701,7 @@ i32.add i32.const 2 i32.shl - i32.const 736 + i32.const 608 i32.add i32.const 0 i32.store offset=96 @@ -719,13 +719,13 @@ br $repeat|0 end end - i32.const 736 - i32.const 2320 + i32.const 608 + i32.const 2192 current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 736 + i32.const 608 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -1072,7 +1072,7 @@ i32.const 16 i32.add ) - (func $~lib/rt/purerc/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1099,7 +1099,7 @@ i32.add i32.store offset=4 local.get $0 - call $~lib/rt/purerc/onIncrement + call $~lib/rt/pure/onIncrement local.get $0 i32.load i32.const 1 @@ -1113,15 +1113,15 @@ unreachable end ) - (func $~lib/rt/purerc/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 736 + i32.const 604 i32.gt_u if local.get $0 i32.const 16 i32.sub - call $~lib/rt/purerc/increment + call $~lib/rt/pure/increment end local.get $0 ) @@ -1298,7 +1298,7 @@ end end ) - (func $~lib/rt/common/__allocArray (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__allocArray (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 16 local.get $1 @@ -1308,10 +1308,10 @@ local.get $0 i32.shl local.tee $0 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $1 local.get $2 @@ -1326,15 +1326,15 @@ ) (func $std/array-literal/Ref#constructor (; 20 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - i32.const 19 + i32.const 5 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain ) (func $std/array-literal/RefWithCtor#constructor (; 21 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - i32.const 21 + i32.const 7 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain ) (func $~lib/rt/tlsf/freeBlock (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -1362,38 +1362,33 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 552 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 528 + i32.load + i32.gt_u if i32.const 136 - i32.const 512 - i32.const 55 - i32.const 34 + i32.const 504 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 552 + i32.const 532 i32.add i32.load ) - (func $~lib/rt/purerc/growRoots (; 24 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 24 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/purerc/CUR - global.get $~lib/rt/purerc/ROOTS + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS local.tee $2 i32.sub local.tee $1 @@ -1413,25 +1408,25 @@ local.get $1 call $~lib/memory/memory.copy local.get $0 - global.set $~lib/rt/purerc/ROOTS + global.set $~lib/rt/pure/ROOTS local.get $0 local.get $1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR local.get $0 local.get $3 i32.add - global.set $~lib/rt/purerc/END + global.set $~lib/rt/pure/END ) - (func $~lib/rt/purerc/appendRoot (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.tee $1 - global.get $~lib/rt/purerc/END + global.get $~lib/rt/pure/END i32.ge_u if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR local.set $1 end local.get $1 @@ -1440,9 +1435,9 @@ local.get $1 i32.const 1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/purerc/decrement (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1452,7 +1447,7 @@ i32.and local.set $1 local.get $0 - call $~lib/rt/purerc/onDecrement + call $~lib/rt/pure/onDecrement local.get $0 i32.load i32.const 1 @@ -1473,7 +1468,7 @@ i32.const 16 i32.add i32.const 1 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members local.get $2 i32.const -2147483648 i32.and @@ -1500,7 +1495,7 @@ end local.get $0 i32.load offset=8 - call $~lib/rt/common/__typeinfo + call $~lib/rt/__typeinfo i32.const 8 i32.and if @@ -1527,20 +1522,20 @@ i32.eqz if local.get $0 - call $~lib/rt/purerc/appendRoot + call $~lib/rt/pure/appendRoot end end end ) - (func $~lib/rt/purerc/__release (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 736 + i32.const 604 i32.gt_u if local.get $0 i32.const 16 i32.sub - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement end ) (func $start:std/array-literal (; 28 ;) (type $FUNCSIG$v) @@ -1660,8 +1655,8 @@ unreachable end i32.const 0 - i32.const 17 - call $~lib/rt/common/__allocArray + i32.const 3 + call $~lib/rt/__allocArray local.tee $2 i32.load offset=4 local.tee $0 @@ -1671,21 +1666,20 @@ local.get $1 i32.const 1 i32.add - local.tee $1 global.set $std/array-literal/i local.get $0 - local.get $1 - i32.store8 offset=1 global.get $std/array-literal/i + local.tee $1 + i32.store8 offset=1 + local.get $1 i32.const 1 i32.add - local.tee $1 global.set $std/array-literal/i local.get $0 - local.get $1 + global.get $std/array-literal/i i32.store8 offset=2 local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 i32.load offset=12 @@ -1739,8 +1733,8 @@ i32.const 0 global.set $std/array-literal/i i32.const 2 - i32.const 18 - call $~lib/rt/common/__allocArray + i32.const 4 + call $~lib/rt/__allocArray local.tee $2 i32.load offset=4 local.tee $0 @@ -1750,21 +1744,20 @@ local.get $1 i32.const 1 i32.add - local.tee $1 global.set $std/array-literal/i local.get $0 - local.get $1 - i32.store offset=4 global.get $std/array-literal/i + local.tee $1 + i32.store offset=4 + local.get $1 i32.const 1 i32.add - local.tee $1 global.set $std/array-literal/i local.get $0 - local.get $1 + global.get $std/array-literal/i i32.store offset=8 local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 i32.load offset=12 @@ -1816,27 +1809,27 @@ unreachable end i32.const 2 - i32.const 20 - call $~lib/rt/common/__allocArray + i32.const 6 + call $~lib/rt/__allocArray local.tee $2 i32.load offset=4 local.tee $0 call $std/array-literal/Ref#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $0 call $std/array-literal/Ref#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 call $std/array-literal/Ref#constructor local.tee $4 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=8 local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef i32.load offset=12 @@ -1851,27 +1844,27 @@ unreachable end i32.const 2 - i32.const 22 - call $~lib/rt/common/__allocArray + i32.const 8 + call $~lib/rt/__allocArray local.tee $2 i32.load offset=4 local.tee $0 call $std/array-literal/RefWithCtor#constructor local.tee $5 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $0 call $std/array-literal/RefWithCtor#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 call $std/array-literal/RefWithCtor#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=8 local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor i32.load offset=12 @@ -1886,32 +1879,32 @@ unreachable end global.get $std/array-literal/emptyArrayI32 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayI8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayI32 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayRef - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) (func $start (; 29 ;) (type $FUNCSIG$v) call $start:std/array-literal ) - (func $~lib/rt/purerc/markGray (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1932,10 +1925,10 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -1946,9 +1939,9 @@ i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1965,7 +1958,7 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 @@ -1978,11 +1971,11 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2004,15 +1997,15 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 736 + i32.const 604 i32.lt_u if return @@ -2044,7 +2037,7 @@ br $case5|0 end local.get $0 - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement br $break|0 end local.get $0 @@ -2068,11 +2061,11 @@ i32.sub i32.store offset=4 local.get $0 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray br $break|0 end local.get $0 - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan br $break|0 end local.get $0 @@ -2104,12 +2097,12 @@ i32.and if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack end br $break|0 end local.get $0 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite br $break|0 end i32.const 0 @@ -2141,7 +2134,7 @@ if local.get $3 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit end local.get $2 i32.const 4 @@ -2151,32 +2144,31 @@ end end ) - (func $~lib/builtins/__visit_members (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $block$16$break - block $switch$1$case$24 - block $switch$1$case$22 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/rt/__visit_members (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$4$break + block $switch$1$default + block $switch$1$case$10 + block $switch$1$case$8 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $block$16$break $switch$1$case$3 $switch$1$case$3 $block$16$break $block$16$break $switch$1$case$3 $switch$1$case$22 $switch$1$case$3 $switch$1$case$24 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default end - unreachable + return end - return + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end local.get $0 local.get $1 call $~lib/array/Array#__visit_impl - br $block$16$break + br $block$4$break end - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl + unreachable end local.get $0 i32.load @@ -2184,7 +2176,7 @@ if local.get $0 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit end ) (func $null (; 37 ;) (type $FUNCSIG$v) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index d289f9cc..ee8fed3c 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -9,24 +9,24 @@ (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\01\02") - (data (i32.const 32) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03\00\00\00") - (data (i32.const 64) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 120) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 176) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 224) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 256) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\00\f0\00\00\00\f0\00\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 288) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 304) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\000\01\00\000\01\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 336) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 384) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 440) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 496) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 552) "\16\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00") + (data (i32.const 8) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\01\02") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03\00\00\00") + (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") + (data (i32.const 120) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 176) "\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 224) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 256) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00\f0\00\00\00\f0\00\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 288) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 304) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\000\01\00\000\01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 336) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 384) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 440) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 488) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 528) "\t\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\02\00\00\00I\00\00\00\02\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\02\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\02\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/array-literal/staticArrayI8 i32 (i32.const 48)) @@ -38,11 +38,11 @@ (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 552)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 736)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/RTTI_BASE i32 (i32.const 528)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 604)) (export "memory" (memory $0)) (start $start) (func $~lib/array/Array#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -854,7 +854,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.const 15 i32.add i32.const 15 @@ -1123,6 +1123,8 @@ i32.shl i32.and local.set $6 + i32.const 0 + local.set $7 local.get $6 i32.eqz if @@ -1452,7 +1454,7 @@ i32.const 16 i32.add ) - (func $~lib/rt/purerc/increment (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/increment (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1485,7 +1487,7 @@ i32.add i32.store offset=4 local.get $0 - call $~lib/rt/purerc/onIncrement + call $~lib/rt/pure/onIncrement local.get $0 i32.load i32.const 1 @@ -1501,15 +1503,15 @@ unreachable end ) - (func $~lib/rt/purerc/__retain (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__retain (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.gt_u if local.get $0 i32.const 16 i32.sub - call $~lib/rt/purerc/increment + call $~lib/rt/pure/increment end local.get $0 ) @@ -1719,7 +1721,7 @@ end end ) - (func $~lib/rt/common/__allocArray (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1732,12 +1734,12 @@ i32.shl local.set $5 local.get $5 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.set $6 local.get $4 local.get $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $4 local.get $6 @@ -1762,9 +1764,9 @@ i32.eqz if i32.const 0 - i32.const 19 + i32.const 5 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -1778,9 +1780,9 @@ i32.eqz if i32.const 0 - i32.const 21 + i32.const 7 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -1818,45 +1820,41 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/builtins/RTTI_BASE + global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if i32.const 136 - i32.const 512 - i32.const 55 - i32.const 34 + i32.const 504 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/rt/purerc/growRoots (; 30 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 30 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/purerc/ROOTS + global.get $~lib/rt/pure/ROOTS local.set $0 - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.get $0 i32.sub local.set $1 @@ -1882,26 +1880,26 @@ local.get $1 call $~lib/memory/memory.copy local.get $5 - global.set $~lib/rt/purerc/ROOTS + global.set $~lib/rt/pure/ROOTS local.get $5 local.get $1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR local.get $5 local.get $4 i32.add - global.set $~lib/rt/purerc/END + global.set $~lib/rt/pure/END ) - (func $~lib/rt/purerc/appendRoot (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.set $1 local.get $1 - global.get $~lib/rt/purerc/END + global.get $~lib/rt/pure/END i32.ge_u if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR local.set $1 end local.get $1 @@ -1910,9 +1908,9 @@ local.get $1 i32.const 1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/purerc/decrement (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1923,7 +1921,7 @@ i32.and local.set $2 local.get $0 - call $~lib/rt/purerc/onDecrement + call $~lib/rt/pure/onDecrement local.get $0 i32.load i32.const 1 @@ -1946,7 +1944,7 @@ i32.const 16 i32.add i32.const 1 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members local.get $1 i32.const -2147483648 i32.and @@ -1979,7 +1977,7 @@ end local.get $0 i32.load offset=8 - call $~lib/rt/common/__typeinfo + call $~lib/rt/__typeinfo i32.const 8 i32.and i32.eqz @@ -1999,7 +1997,7 @@ i32.eqz if local.get $0 - call $~lib/rt/purerc/appendRoot + call $~lib/rt/pure/appendRoot end else local.get $0 @@ -2016,15 +2014,15 @@ end end ) - (func $~lib/rt/purerc/__release (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.gt_u if local.get $0 i32.const 16 i32.sub - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement end ) (func $start:std/array-literal (; 34 ;) (type $FUNCSIG$v) @@ -2162,9 +2160,9 @@ block (result i32) i32.const 3 i32.const 0 - i32.const 17 + i32.const 3 i32.const 0 - call $~lib/rt/common/__allocArray + call $~lib/rt/__allocArray local.set $1 local.get $1 i32.load offset=4 @@ -2177,9 +2175,8 @@ global.get $std/array-literal/i i32.const 1 i32.add - local.tee $2 global.set $std/array-literal/i - local.get $2 + global.get $std/array-literal/i end i32.store8 offset=1 local.get $0 @@ -2187,14 +2184,13 @@ global.get $std/array-literal/i i32.const 1 i32.add - local.tee $2 global.set $std/array-literal/i - local.get $2 + global.get $std/array-literal/i end i32.store8 offset=2 local.get $1 end - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 call $~lib/array/Array#get:length @@ -2256,9 +2252,9 @@ block (result i32) i32.const 3 i32.const 2 - i32.const 18 + i32.const 4 i32.const 0 - call $~lib/rt/common/__allocArray + call $~lib/rt/__allocArray local.set $0 local.get $0 i32.load offset=4 @@ -2271,9 +2267,8 @@ global.get $std/array-literal/i i32.const 1 i32.add - local.tee $2 global.set $std/array-literal/i - local.get $2 + global.get $std/array-literal/i end i32.store offset=4 local.get $1 @@ -2281,14 +2276,13 @@ global.get $std/array-literal/i i32.const 1 i32.add - local.tee $2 global.set $std/array-literal/i - local.get $2 + global.get $std/array-literal/i end i32.store offset=8 local.get $0 end - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 call $~lib/array/Array#get:length @@ -2348,9 +2342,9 @@ block (result i32) i32.const 3 i32.const 2 - i32.const 20 + i32.const 6 i32.const 0 - call $~lib/rt/common/__allocArray + call $~lib/rt/__allocArray local.set $1 local.get $1 i32.load offset=4 @@ -2359,23 +2353,23 @@ i32.const 0 call $std/array-literal/Ref#constructor local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 0 call $std/array-literal/Ref#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 i32.const 0 call $std/array-literal/Ref#constructor local.tee $4 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=8 local.get $1 end - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef call $~lib/array/Array#get:length @@ -2393,9 +2387,9 @@ block (result i32) i32.const 3 i32.const 2 - i32.const 22 + i32.const 8 i32.const 0 - call $~lib/rt/common/__allocArray + call $~lib/rt/__allocArray local.set $0 local.get $0 i32.load offset=4 @@ -2404,23 +2398,23 @@ i32.const 0 call $std/array-literal/RefWithCtor#constructor local.tee $5 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $1 i32.const 0 call $std/array-literal/RefWithCtor#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=4 local.get $1 i32.const 0 call $std/array-literal/RefWithCtor#constructor local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store offset=8 local.get $0 end - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor call $~lib/array/Array#get:length @@ -2436,27 +2430,27 @@ unreachable end global.get $std/array-literal/emptyArrayI32 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayI8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayI32 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayRef - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) (func $start (; 35 ;) (type $FUNCSIG$v) call $start:std/array-literal @@ -2467,7 +2461,7 @@ (func $~lib/array/Array#__visit_impl (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/purerc/markGray (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2491,10 +2485,10 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -2509,9 +2503,9 @@ i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2529,7 +2523,7 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 @@ -2544,11 +2538,11 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2571,17 +2565,17 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.lt_u if return @@ -2623,7 +2617,7 @@ end block local.get $2 - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement br $break|0 unreachable end @@ -2652,7 +2646,7 @@ i32.sub i32.store offset=4 local.get $2 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray br $break|0 unreachable end @@ -2660,7 +2654,7 @@ end block local.get $2 - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan br $break|0 unreachable end @@ -2704,7 +2698,7 @@ i32.ne if local.get $2 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack end br $break|0 unreachable @@ -2713,7 +2707,7 @@ end block local.get $2 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite br $break|0 unreachable end @@ -2756,7 +2750,7 @@ if local.get $4 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit end local.get $2 i32.const 4 @@ -2792,7 +2786,7 @@ if local.get $4 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit end local.get $2 i32.const 4 @@ -2803,28 +2797,28 @@ end end ) - (func $~lib/builtins/__visit_members (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$16$break + block $block$4$break block end block $switch$1$leave - block $switch$1$case$24 - block $switch$1$case$22 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$10 + block $switch$1$case$8 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$case$3 $switch$1$case$22 $switch$1$case$3 $switch$1$case$24 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -2833,17 +2827,24 @@ unreachable end block + br $block$4$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl block - return + br $block$4$break unreachable end unreachable unreachable end unreachable - end - block - br $block$16$break unreachable end unreachable @@ -2852,9 +2853,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -2869,9 +2870,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -2886,9 +2887,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -2901,13 +2902,6 @@ end block block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end unreachable unreachable end @@ -2925,7 +2919,7 @@ if local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit end return unreachable diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index b8a22b81..fb2b7290 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1,11 +1,13 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$fii (func (param i32 i32) (result f32))) (type $FUNCSIG$d (func (result f64))) @@ -14,96 +16,92 @@ (type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$id (func (param f64) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $FUNCSIG$iiid (func (param i32 i32 f64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$iiij (func (param i32 i32 i64) (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) + (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 112) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 176) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 200) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 224) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 280) "\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 328) "\05\00\00\00\01\00\00\00\00\00\00\00\05") - (data (i32.const 352) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") - (data (i32.const 376) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 400) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 424) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 464) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 504) "\14\00\00\00\01\00\00\00\00\00\00\00\14") - (data (i32.const 544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") - (data (i32.const 584) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 664) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 716) "\01") - (data (i32.const 732) "\01") - (data (i32.const 744) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 784) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 824) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 864) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 904) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 944) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 984) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1064) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1144) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1184) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1224) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1264) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 1304) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1344) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1384) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1424) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1464) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1584) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 1624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 1704) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1744) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1788) "\01") - (data (i32.const 1800) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1840) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1872) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 256) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 304) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 360) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 424) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") + (data (i32.const 448) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 472) "\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 520) "\05\00\00\00\01\00\00\00\00\00\00\00\05") + (data (i32.const 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") + (data (i32.const 568) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 592) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 656) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 696) "\14\00\00\00\01\00\00\00\00\00\00\00\14") + (data (i32.const 736) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") + (data (i32.const 776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 856) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data (i32.const 908) "\01") + (data (i32.const 924) "\01") + (data (i32.const 936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 976) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1016) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1056) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data (i32.const 1096) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1136) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 1176) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1216) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1256) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1296) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1336) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1416) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1456) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1496) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1536) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1576) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1656) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1696) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1736) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1856) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") (data (i32.const 1896) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1936) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") - (data (i32.const 1960) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") + (data (i32.const 1936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1980) "\01") (data (i32.const 1992) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2032) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 2056) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2032) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2064) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") (data (i32.const 2088) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2128) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05") - (data (i32.const 2152) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data (i32.const 2128) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04") + (data (i32.const 2152) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") (data (i32.const 2184) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2224) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05") - (data (i32.const 2248) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 2224) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 2248) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2280) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2320) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04") - (data (i32.const 2344) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data (i32.const 2320) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05") + (data (i32.const 2344) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") (data (i32.const 2376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2416) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 2440) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2416) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05") + (data (i32.const 2440) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 2472) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2516) "\01") - (data (i32.const 2528) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2512) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04") + (data (i32.const 2536) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") (data (i32.const 2568) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2612) "\01") - (data (i32.const 2624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2608) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 2632) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2708) "\01") (data (i32.const 2720) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") @@ -113,105 +111,111 @@ (data (i32.const 2856) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") (data (i32.const 2900) "\01") (data (i32.const 2912) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2952) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 2992) "\ac\00\00\00\01\00\00\00\01\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") - (data (i32.const 3184) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data (i32.const 3232) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 3280) "@\00\00\00\01\00\00\00\00\00\00\00@") - (data (i32.const 3302) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") - (data (i32.const 3342) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 3360) "@\00\00\00\01\00\00\00\00\00\00\00@") - (data (i32.const 3382) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 3414) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 3440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 3480) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 3520) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 3560) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 3604) "\01") - (data (i32.const 3616) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 3640) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01") - (data (i32.const 3664) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 3696) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 3728) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.") - (data (i32.const 3784) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") - (data (i32.const 3808) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 3832) "^\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 3944) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 3968) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 3992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 4016) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 4044) "\01\00\00\00\01") - (data (i32.const 4056) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00x\0f\00\00\90\0f\00\00x\0f\00\00\a8\0f\00\00\c0\0f\00\00\d8\0f") - (data (i32.const 4104) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\d8\0f\00\00x\0f\00\00x\0f\00\00\a8\0f\00\00\90\0f\00\00\c0\0f") - (data (i32.const 4152) "\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 4200) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 4224) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01") - (data (i32.const 4248) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 4272) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 4304) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 4328) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 4368) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 4400) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 4424) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 4840) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00X\11\00\00X\11\00\00\90\01\00\00d") - (data (i32.const 4872) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 4904) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 4936) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 4960) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 4984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 5008) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 5072) "0\00\00\00\01\00\00\00\00\00\00\000") - (data (i32.const 5102) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 5136) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 5160) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 5184) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 5208) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 5248) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 5280) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00*\00&\00$\00%\00^\00@\00#\00!\00?") + (data (i32.const 3376) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data (i32.const 3424) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data (i32.const 3472) "@\00\00\00\01\00\00\00\00\00\00\00@") + (data (i32.const 3494) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") + (data (i32.const 3534) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 3552) "@\00\00\00\01\00\00\00\00\00\00\00@") + (data (i32.const 3574) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data (i32.const 3606) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data (i32.const 3632) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data (i32.const 3672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data (i32.const 3712) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data (i32.const 3752) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 3796) "\01") + (data (i32.const 3808) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 3832) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01") + (data (i32.const 3856) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 3888) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 3920) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.") + (data (i32.const 3976) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01") + (data (i32.const 4000) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 4024) "^\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 4136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 4160) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 4184) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 4208) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 4236) "\01\00\00\00\01") + (data (i32.const 4248) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\008\10\00\00P\10\00\008\10\00\00h\10\00\00\80\10\00\00\98\10") + (data (i32.const 4296) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\98\10\00\008\10\00\008\10\00\00h\10\00\00P\10\00\00\80\10") + (data (i32.const 4344) "\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 4392) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 4416) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01") + (data (i32.const 4440) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 4464) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 4496) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,") + (data (i32.const 4520) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data (i32.const 4560) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 4592) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") + (data (i32.const 4616) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data (i32.const 5032) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\18\12\00\00\18\12\00\00\90\01\00\00d") + (data (i32.const 5064) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") + (data (i32.const 5096) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 5128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-") + (data (i32.const 5152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 5176) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_") + (data (i32.const 5200) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 5264) "0\00\00\00\01\00\00\00\00\00\00\000") + (data (i32.const 5294) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") + (data (i32.const 5328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 5352) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 5376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 5400) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 5440) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 5472) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) (global $std/array/i (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) @@ -227,12 +231,7 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "main" (func $std/array/main)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) (export "__realloc" (func $~lib/rt/tlsf/__realloc)) (export "__free" (func $~lib/rt/tlsf/__free)) @@ -241,95 +240,1000 @@ (export "__collect" (func $~lib/rt/pure/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (export "main" (func $std/array/main)) + (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz if + i32.const 0 i32.const 24 - i32.const 72 - i32.const 14 - i32.const 56 + i32.const 275 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 290 + i32.const 13 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $1 local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 i32.eqz if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 + i32.const 0 + i32.const 24 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 3 + i32.and + local.get $2 + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $3 + i32.store + local.get $2 + else + local.get $1 + end + local.set $1 + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 + local.get $0 local.get $0 i32.load - call $~lib/rt/pure/__retainRelease + i32.const 1 + local.get $3 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 i32.store local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 local.get $1 - i32.store offset=4 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 7920 + i32.const 0 + i32.store + i32.const 9488 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 7920 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 7920 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 7920 + i32.const 9504 + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 7920 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end local.get $0 local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 i32.store offset=8 local.get $0 - ) - (func $~lib/array/Array#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 + i32.add ) - (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - local.get $0 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - i32.ne - ) - (func $~lib/array/Array.isArray (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/memory/memory.copy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -502,7 +1406,814 @@ end end ) - (func $~lib/rt/__allocArray (; 10 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + ) + (func $~lib/rt/tlsf/__free (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/increment (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 7908 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 7696 + i32.load + i32.gt_u + if + i32.const 176 + i32.const 232 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 7700 + i32.add + i32.load + ) + (func $~lib/rt/pure/growRoots (; 23 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + local.get $2 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/pure/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 128 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__release (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 7908 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/rt/pure/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__collect (; 31 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/pure/CUR + local.set $0 + loop $repeat|0 + block $break|0 + local.get $3 + local.get $0 + i32.ge_u + br_if $break|0 + local.get $3 + i32.load + local.tee $4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $2 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + else + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 + i32.const 1879048192 + i32.and + select + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $1 + i32.const 2147483647 + i32.and + i32.store offset=4 + end + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $repeat|0 + end + end + local.get $2 + global.set $~lib/rt/pure/CUR + local.get $5 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 + local.get $2 + i32.ge_u + br_if $break|1 + local.get $0 + i32.load + call $~lib/rt/pure/scan + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $repeat|1 + end + end + local.get $5 + local.set $0 + loop $repeat|2 + block $break|2 + local.get $0 + local.get $2 + i32.ge_u + br_if $break|2 + local.get $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 2147483647 + i32.and + i32.store offset=4 + local.get $1 + call $~lib/rt/pure/collectWhite + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $repeat|2 + end + end + local.get $5 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/__instanceof (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.tee $0 + i32.const 7696 + i32.load + i32.le_u + if + loop $continue|0 + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 3 + i32.shl + i32.const 7700 + i32.add + i32.load offset=4 + local.tee $0 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $~lib/rt/pure/__retainRelease (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.ne + if + local.get $1 + i32.const 7908 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + i32.const 7908 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + end + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 272 + i32.const 320 + i32.const 14 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $1 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 + ) + (func $~lib/array/Array#constructor (; 35 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 16 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + i32.const 0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $0 + call $~lib/rt/pure/__release + local.get $0 + i32.const 0 + i32.ne + ) + (func $~lib/array/Array.isArray (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + ) + (func $~lib/rt/__allocArray (; 38 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) i32.const 16 local.get $2 @@ -535,7 +2246,7 @@ end local.get $2 ) - (func $~lib/memory/memory.fill (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) block $~lib/util/memory/memset|inlined.0 @@ -760,7 +2471,7 @@ end end ) - (func $~lib/array/Array#fill (; 12 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 40 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -827,14 +2538,14 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -846,7 +2557,7 @@ i32.add i32.load8_u ) - (func $std/array/isArraysEqual (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -903,7 +2614,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $~lib/array/Array#fill (; 15 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 43 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -979,7 +2690,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -987,8 +2698,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -1002,7 +2713,7 @@ i32.add i32.load ) - (func $std/array/isArraysEqual (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1064,7 +2775,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $std/array/internalCapacity (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/internalCapacity (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1086,7 +2797,7 @@ i32.const 2 i32.shr_s ) - (func $~lib/array/ensureSize (; 19 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureSize (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1102,8 +2813,8 @@ i32.const 268435452 i32.gt_u if - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -1142,7 +2853,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#push (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1165,7 +2876,7 @@ local.get $3 i32.store offset=12 ) - (func $~lib/array/Array#pop (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1174,8 +2885,8 @@ i32.const 1 i32.lt_s if - i32.const 680 - i32.const 296 + i32.const 872 + i32.const 488 i32.const 250 i32.const 20 call $~lib/builtins/abort @@ -1197,7 +2908,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#concat (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1221,8 +2932,8 @@ if local.get $1 call $~lib/rt/pure/__release - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 197 i32.const 59 call $~lib/builtins/abort @@ -1257,7 +2968,19 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/array/Array#copyWithin (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 7908 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/array/Array#copyWithin (; 52 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -1420,7 +3143,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#unshift (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#unshift (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1449,7 +3172,7 @@ local.get $2 i32.store offset=12 ) - (func $~lib/array/Array#shift (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1460,8 +3183,8 @@ i32.const 1 i32.lt_s if - i32.const 680 - i32.const 296 + i32.const 872 + i32.const 488 i32.const 311 i32.const 20 call $~lib/builtins/abort @@ -1494,7 +3217,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#reverse (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#reverse (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1544,7 +3267,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#indexOf (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -1604,7 +3327,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -1612,7 +3335,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1702,7 +3425,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/array/Array#__set (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 59 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -1731,7 +3454,7 @@ i32.store offset=12 end ) - (func $start:std/array~anonymous|0 (; 31 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1740,7 +3463,7 @@ local.get $0 i32.eqz ) - (func $~lib/array/Array#findIndex (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1788,7 +3511,7 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1798,7 +3521,7 @@ i32.const 1 i32.eq ) - (func $start:std/array~anonymous|2 (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1808,7 +3531,7 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|3 (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1821,7 +3544,7 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|5 (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1834,7 +3557,7 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1844,7 +3567,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#every (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1892,7 +3615,7 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1902,7 +3625,7 @@ i32.const 0 i32.le_s ) - (func $start:std/array~anonymous|8 (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 69 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1915,7 +3638,7 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1925,7 +3648,7 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|10 (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1938,7 +3661,7 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -1948,7 +3671,7 @@ i32.const 3 i32.ge_s ) - (func $~lib/array/Array#some (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1996,7 +3719,7 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2006,7 +3729,7 @@ i32.const -1 i32.le_s ) - (func $start:std/array~anonymous|13 (; 46 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2019,7 +3742,7 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2029,7 +3752,7 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|15 (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2042,7 +3765,7 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 78 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2053,7 +3776,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array#forEach (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2096,7 +3819,7 @@ unreachable end ) - (func $start:std/array~anonymous|17 (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2110,7 +3833,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|19 (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2124,7 +3847,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|20 (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2216,7 +3939,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 570 i32.const 6 call $~lib/builtins/abort @@ -2226,7 +3949,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|21 (; 54 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 83 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2235,7 +3958,7 @@ local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#map (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#map (; 84 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2293,7 +4016,7 @@ end local.get $4 ) - (func $~lib/array/Array#__get (; 56 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 85 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -2301,8 +4024,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -2316,7 +4039,7 @@ i32.add f32.load ) - (func $start:std/array~anonymous|22 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2331,7 +4054,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $~lib/array/Array#map (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2391,7 +4114,7 @@ end local.get $5 ) - (func $start:std/array~anonymous|23 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2403,7 +4126,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $start:std/array~anonymous|24 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2418,7 +4141,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $start:std/array~anonymous|25 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2428,7 +4151,7 @@ i32.const 2 i32.ge_s ) - (func $~lib/array/Array#filter (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 91 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2485,7 +4208,7 @@ end local.get $4 ) - (func $start:std/array~anonymous|26 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2502,7 +4225,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2516,7 +4239,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2533,7 +4256,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/pure/__retain drop @@ -2543,7 +4266,7 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduce (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2587,7 +4310,7 @@ end local.get $2 ) - (func $start:std/array~anonymous|31 (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 97 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/pure/__retain drop @@ -2600,7 +4323,7 @@ local.get $0 select ) - (func $start:std/array~anonymous|32 (; 69 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 98 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/pure/__retain drop @@ -2613,7 +4336,7 @@ local.get $0 select ) - (func $start:std/array~anonymous|33 (; 70 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/pure/__retain drop @@ -2626,7 +4349,7 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|35 (; 71 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/pure/__retain drop @@ -2639,7 +4362,7 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 101 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2676,7 +4399,7 @@ end local.get $2 ) - (func $~lib/math/splitMix32 (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -2708,13 +4431,13 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 74 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 103 ;) (type $FUNCSIG$vj) (param $0 i64) (local $1 i64) local.get $0 i64.eqz if i32.const 0 - i32.const 2968 + i32.const 3160 i32.const 1021 i32.const 4 call $~lib/builtins/abort @@ -2773,7 +4496,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 104 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -2855,7 +4578,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 105 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -3116,7 +4839,7 @@ local.get $5 f32.store ) - (func $~lib/array/Array#sort (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 106 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -3181,7 +4904,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 78 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 107 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3210,7 +4933,7 @@ i32.lt_s i32.sub ) - (func $std/array/isArraysEqual (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f32) (local $4 i32) @@ -3283,7 +5006,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 109 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -3365,7 +5088,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 110 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -3626,7 +5349,7 @@ local.get $5 f64.store ) - (func $~lib/array/Array#sort (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f64) @@ -3691,7 +5414,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 83 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 112 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -3720,7 +5443,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#__get (; 84 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 113 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -3728,8 +5451,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -3743,7 +5466,7 @@ i32.add f64.load ) - (func $std/array/isArraysEqual (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -3816,7 +5539,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 86 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3898,7 +5621,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4159,7 +5882,7 @@ local.get $1 i32.store ) - (func $~lib/array/Array#sort (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4223,12 +5946,12 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 89 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 90 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -4237,13 +5960,13 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array.create (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 268435452 i32.gt_u if - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 45 i32.const 61 call $~lib/builtins/abort @@ -4266,7 +5989,7 @@ call $~lib/memory/memory.fill local.get $0 ) - (func $std/array/createReverseOrderedArray (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 121 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4295,14 +6018,14 @@ end local.get $2 ) - (func $~lib/math/NativeMath.random (; 93 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 122 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded i32.eqz if - i32.const 3744 - i32.const 2968 + i32.const 3936 + i32.const 3160 i32.const 1030 i32.const 24 call $~lib/builtins/abort @@ -4342,7 +6065,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4371,7 +6094,7 @@ end local.get $2 ) - (func $std/array/isSorted (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4420,7 +6143,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $std/array/assertSorted (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -4434,7 +6157,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -4445,7 +6168,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/array/assertSortedDefault (; 97 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 126 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/rt/pure/__retain drop @@ -4455,12 +6178,12 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|44 (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array.create<~lib/array/Array> (; 99 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create<~lib/array/Array> (; 128 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 2 i32.const 2 @@ -4479,7 +6202,7 @@ call $~lib/memory/memory.fill local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -4490,15 +6213,15 @@ i32.shl i32.add local.tee $0 - local.get $2 local.get $0 i32.load + local.get $2 call $~lib/rt/pure/__retainRelease i32.store local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 101 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -4511,8 +6234,8 @@ if local.get $2 call $~lib/rt/pure/__release - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 112 i32.const 38 call $~lib/builtins/abort @@ -4540,7 +6263,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/array/createReverseOrderedNestedArray (; 102 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 131 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4574,7 +6297,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -4596,7 +6319,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 104 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 133 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4689,7 +6412,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/array/Array>#sort (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4751,7 +6474,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 106 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4761,14 +6484,14 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 97 i32.const 45 call $~lib/builtins/abort @@ -4781,8 +6504,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -4792,7 +6515,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted<~lib/array/Array> (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/array/Array> (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4853,7 +6576,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $std/array/assertSorted<~lib/array/Array> (; 109 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/array/Array> (; 138 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -4867,7 +6590,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -4878,7 +6601,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/array/Array.create> (; 110 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create> (; 139 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 512 i32.const 2 @@ -4897,7 +6620,7 @@ call $~lib/memory/memory.fill local.get $0 ) - (func $std/array/createReverseOrderedElementsArray (; 111 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 140 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4932,7 +6655,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -4952,7 +6675,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String | null>#__get (; 113 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#__get (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4960,8 +6683,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -4971,7 +6694,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted<~lib/string/String | null> (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String | null> (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5032,7 +6755,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $std/array/assertSorted<~lib/string/String | null> (; 115 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String | null> (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -5046,7 +6769,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -5057,7 +6780,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/util/string/compareImpl (; 116 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 145 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5106,7 +6829,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -5189,7 +6912,7 @@ call $~lib/rt/pure/__release i32.const 0 ) - (func $~lib/string/String.__eq (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -5249,7 +6972,7 @@ call $~lib/rt/pure/__release i32.const 0 ) - (func $~lib/string/String.__ne (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -5268,7 +6991,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5349,7 +7072,7 @@ call $~lib/rt/pure/__release i32.const 1 ) - (func $~lib/array/Array.create<~lib/string/String> (; 121 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create<~lib/string/String> (; 150 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 400 i32.const 2 @@ -5368,16 +7091,16 @@ call $~lib/memory/memory.fill local.get $0 ) - (func $~lib/string/String#charAt (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#charAt (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 3004 + i32.const 3196 i32.load i32.const 1 i32.shr_u i32.ge_u if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain return end @@ -5388,14 +7111,14 @@ local.get $0 i32.const 1 i32.shl - i32.const 3008 + i32.const 3200 i32.add i32.load16_u i32.store16 local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#concat (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5406,8 +7129,8 @@ local.get $1 i32.eqz if - i32.const 4216 local.get $1 + i32.const 4408 call $~lib/rt/pure/__retainRelease local.set $1 end @@ -5434,7 +7157,7 @@ i32.eqz end if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 local.get $1 @@ -5460,7 +7183,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__concat (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -5469,7 +7192,7 @@ call $~lib/rt/pure/__retain drop local.get $0 - i32.const 4216 + i32.const 4408 local.get $0 select local.get $1 @@ -5481,12 +7204,12 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/createRandomString (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $1 loop $repeat|0 @@ -5494,9 +7217,10 @@ local.get $0 i32.lt_s if + local.get $1 local.get $1 call $~lib/math/NativeMath.random - i32.const 3004 + i32.const 3196 i32.load i32.const 1 i32.shr_u @@ -5508,7 +7232,6 @@ local.tee $3 call $~lib/string/String.__concat local.tee $4 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $3 @@ -5524,7 +7247,7 @@ end local.get $1 ) - (func $std/array/createRandomStringArray (; 126 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createRandomStringArray (; 155 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5555,14 +7278,14 @@ end local.get $1 ) - (func $~lib/string/String#substring (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if i32.const 0 - i32.const 4168 + i32.const 4360 i32.const 196 i32.const 4 call $~lib/builtins/abort @@ -5614,7 +7337,7 @@ local.tee $2 i32.eqz if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain return end @@ -5650,7 +7373,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#join_bool (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_bool (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5659,7 +7382,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -5670,10 +7393,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return @@ -5684,19 +7407,19 @@ local.get $1 i32.eqz if - i32.const 4264 - i32.const 4288 + i32.const 4456 + i32.const 4480 local.get $3 i32.load8_u select call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -5735,8 +7458,8 @@ i32.shl local.get $2 i32.add - i32.const 4264 - i32.const 4288 + i32.const 4456 + i32.const 4480 local.get $8 select local.get $6 @@ -5754,7 +7477,7 @@ i32.shl local.get $2 i32.add - i32.const 4320 + i32.const 4512 local.get $4 i32.const 1 i32.shl @@ -5785,8 +7508,8 @@ i32.shl local.get $2 i32.add - i32.const 4264 - i32.const 4288 + i32.const 4456 + i32.const 4480 local.get $3 select local.get $1 @@ -5804,18 +7527,18 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/number/decimalCount32 (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -5869,10 +7592,10 @@ end end ) - (func $~lib/util/number/utoa32_lut (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 159 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - i32.const 4860 + i32.const 5052 i32.load local.set $3 loop $continue|0 @@ -5979,14 +7702,14 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -6022,7 +7745,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -6066,7 +7789,7 @@ end local.get $2 ) - (func $~lib/array/Array#join_int (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6084,7 +7807,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 local.get $1 @@ -6204,7 +7927,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/array/Array#join (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/pure/__retain drop @@ -6216,13 +7939,13 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $~lib/util/number/utoa32 (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 i32.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -6240,7 +7963,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 136 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 165 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -6264,7 +7987,7 @@ call $~lib/util/number/utoa32_lut local.get $0 ) - (func $~lib/array/Array#join_int (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6282,7 +8005,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 local.get $1 @@ -6402,7 +8125,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/array/Array#join (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/pure/__retain drop @@ -6414,7 +8137,7 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $~lib/util/number/genDigits (; 139 ;) (type $FUNCSIG$iijijiji) (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 (; 168 ;) (type $FUNCSIG$iijijiji) (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 i32) (local $9 i64) @@ -6449,7 +8172,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 - i32.const 6324 + i32.const 6516 i32.load local.set $13 loop $continue|0 @@ -6819,7 +8542,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 140 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 169 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -7070,7 +8793,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 141 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 170 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -7186,7 +8909,7 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 6012 + i32.const 6204 i32.load local.get $3 i32.const 3 @@ -7194,7 +8917,7 @@ i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 6236 + i32.const 6428 i32.load local.get $3 i32.const 1 @@ -7358,14 +9081,14 @@ local.get $10 i32.add ) - (func $~lib/util/number/dtoa (; 142 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 171 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 f64.const 0 f64.eq if - i32.const 5176 + i32.const 5368 call $~lib/rt/pure/__retain return end @@ -7379,12 +9102,12 @@ local.get $0 f64.ne if - i32.const 5200 + i32.const 5392 call $~lib/rt/pure/__retain return end - i32.const 5224 - i32.const 5264 + i32.const 5416 + i32.const 5456 local.get $0 f64.const 0 f64.lt @@ -7414,7 +9137,7 @@ call $~lib/rt/tlsf/__free local.get $2 ) - (func $~lib/util/number/dtoa_stream (; 143 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 172 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -7468,8 +9191,8 @@ i32.add local.set $1 local.get $0 - i32.const 5224 - i32.const 5264 + i32.const 5416 + i32.const 5456 local.get $3 select local.get $1 @@ -7485,14 +9208,14 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array#join_flt (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_flt (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 5152 + i32.const 5344 call $~lib/rt/pure/__retain drop local.get $0 @@ -7503,10 +9226,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 5152 + i32.const 5344 call $~lib/rt/pure/__release local.get $0 return @@ -7525,12 +9248,12 @@ local.set $1 local.get $0 call $~lib/rt/pure/__release - i32.const 5152 + i32.const 5344 call $~lib/rt/pure/__release local.get $1 return end - i32.const 5148 + i32.const 5340 i32.load i32.const 1 i32.shr_u @@ -7574,7 +9297,7 @@ i32.shl local.get $1 i32.add - i32.const 5152 + i32.const 5344 local.get $4 i32.const 1 i32.shl @@ -7610,18 +9333,18 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 5152 + i32.const 5344 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $0 return end - i32.const 5152 + i32.const 5344 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7640,7 +9363,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 local.get $1 @@ -7681,13 +9404,13 @@ local.get $4 i32.lt_s if + local.get $0 local.get $2 i32.const 2 i32.shl local.get $6 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if @@ -7728,13 +9451,13 @@ local.get $5 i32.lt_s if + local.get $0 local.get $4 i32.const 2 i32.shl local.get $6 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if @@ -7783,13 +9506,13 @@ br $repeat|1 end end + local.get $0 local.get $5 i32.const 2 i32.shl local.get $6 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if @@ -7815,7 +9538,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#join (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/pure/__retain drop @@ -7827,13 +9550,13 @@ call $~lib/rt/pure/__release local.get $0 ) - (func $std/array/Ref#constructor (; 147 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/Ref#constructor (; 176 ;) (type $FUNCSIG$i) (result i32) i32.const 0 i32.const 18 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#join_ref (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_ref (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7841,7 +9564,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -7852,10 +9575,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return @@ -7866,15 +9589,15 @@ local.get $2 i32.eqz if - i32.const 6504 + i32.const 6696 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -7899,13 +9622,13 @@ local.get $2 i32.lt_s if + local.get $5 local.get $4 i32.const 2 i32.shl local.get $6 i32.add i32.load - local.get $5 call $~lib/rt/pure/__retainRelease local.tee $5 if @@ -7914,7 +9637,7 @@ i32.shl local.get $1 i32.add - i32.const 6504 + i32.const 6696 i32.const 30 call $~lib/memory/memory.copy local.get $0 @@ -7929,7 +9652,7 @@ i32.shl local.get $1 i32.add - i32.const 4320 + i32.const 4512 local.get $3 i32.const 1 i32.shl @@ -7959,7 +9682,7 @@ i32.shl local.get $1 i32.add - i32.const 6504 + i32.const 6696 i32.const 30 call $~lib/memory/memory.copy local.get $0 @@ -7976,7 +9699,7 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -7985,18 +9708,18 @@ local.get $0 return end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array#toString (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa_stream (; 150 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 179 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -8051,14 +9774,14 @@ end local.get $2 ) - (func $~lib/array/Array#join_int (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -8069,10 +9792,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return @@ -8091,12 +9814,12 @@ local.set $1 local.get $0 call $~lib/rt/pure/__release - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 return end - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -8138,7 +9861,7 @@ i32.shl local.get $1 i32.add - i32.const 4320 + i32.const 4512 local.get $4 i32.const 1 i32.shl @@ -8172,18 +9895,18 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/number/itoa_stream (; 152 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -8213,14 +9936,14 @@ call $~lib/util/number/utoa32_lut local.get $1 ) - (func $~lib/array/Array#join_int (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -8231,10 +9954,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return @@ -8253,12 +9976,12 @@ local.set $1 local.get $0 call $~lib/rt/pure/__release - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 return end - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -8302,7 +10025,7 @@ i32.shl local.get $1 i32.add - i32.const 4320 + i32.const 4512 local.get $4 i32.const 1 i32.shl @@ -8338,18 +10061,18 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/number/decimalCount64 (; 154 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 183 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -8403,12 +10126,12 @@ end end ) - (func $~lib/util/number/utoa64_lut (; 155 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 184 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4860 + i32.const 5052 i32.load local.set $3 loop $continue|0 @@ -8500,14 +10223,14 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 156 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 185 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i64.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -8544,7 +10267,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 157 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 186 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -8584,14 +10307,14 @@ end local.get $1 ) - (func $~lib/array/Array#join_int (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -8602,10 +10325,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return @@ -8624,12 +10347,12 @@ local.set $1 local.get $0 call $~lib/rt/pure/__release - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 return end - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -8673,7 +10396,7 @@ i32.shl local.get $1 i32.add - i32.const 4320 + i32.const 4512 local.get $4 i32.const 1 i32.shl @@ -8709,18 +10432,18 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/number/itoa64 (; 159 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 188 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8728,7 +10451,7 @@ local.get $0 i64.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -8787,7 +10510,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 160 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 189 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -8850,14 +10573,14 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 190 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -8868,10 +10591,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return @@ -8890,12 +10613,12 @@ local.set $1 local.get $0 call $~lib/rt/pure/__release - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 return end - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -8939,7 +10662,7 @@ i32.shl local.get $1 i32.add - i32.const 4320 + i32.const 4512 local.get $4 i32.const 1 i32.shl @@ -8975,23 +10698,23 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8999,7 +10722,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -9010,18 +10733,18 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $1 - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -9034,21 +10757,21 @@ local.get $2 i32.eqz if + i32.const 0 local.get $3 i32.load - i32.const 0 call $~lib/rt/pure/__retainRelease local.tee $0 if (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $2 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -9062,24 +10785,24 @@ local.get $2 i32.lt_s if + local.get $0 local.get $4 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join local.tee $5 call $~lib/string/String.__concat local.tee $7 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9090,10 +10813,10 @@ local.get $6 if local.get $1 - i32.const 4320 + local.get $1 + i32.const 4512 call $~lib/string/String.__concat local.tee $5 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9106,24 +10829,24 @@ br $repeat|0 end end + local.get $0 local.get $2 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join local.tee $2 call $~lib/string/String.__concat local.tee $3 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $2 @@ -9131,13 +10854,13 @@ local.get $3 call $~lib/rt/pure/__release end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/number/itoa_stream (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -9167,14 +10890,14 @@ call $~lib/util/number/utoa32_lut local.get $1 ) - (func $~lib/array/Array#join_int (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -9185,10 +10908,10 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return @@ -9207,12 +10930,12 @@ local.set $1 local.get $0 call $~lib/rt/pure/__release - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 return end - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -9254,7 +10977,7 @@ i32.shl local.get $1 i32.add - i32.const 4320 + i32.const 4512 local.get $4 i32.const 1 i32.shl @@ -9288,29 +11011,29 @@ local.get $0 call $~lib/string/String#substring local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array#join (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 4320 + (func $~lib/array/Array#join (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 call $~lib/array/Array#join_int local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 167 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9318,7 +11041,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -9329,18 +11052,18 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $1 - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -9353,20 +11076,20 @@ local.get $2 i32.eqz if + i32.const 0 local.get $3 i32.load - i32.const 0 call $~lib/rt/pure/__retainRelease local.tee $0 if (result i32) local.get $0 call $~lib/array/Array#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $2 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -9380,23 +11103,23 @@ local.get $2 i32.lt_s if + local.get $0 local.get $4 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 call $~lib/array/Array#join local.tee $5 call $~lib/string/String.__concat local.tee $7 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9407,10 +11130,10 @@ local.get $6 if local.get $1 - i32.const 4320 + local.get $1 + i32.const 4512 call $~lib/string/String.__concat local.tee $5 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9423,23 +11146,23 @@ br $repeat|0 end end + local.get $0 local.get $2 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 call $~lib/array/Array#join local.tee $2 call $~lib/string/String.__concat local.tee $3 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $2 @@ -9447,13 +11170,13 @@ local.get $3 call $~lib/rt/pure/__release end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 168 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9461,7 +11184,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -9472,18 +11195,18 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $1 - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -9496,21 +11219,21 @@ local.get $2 i32.eqz if + i32.const 0 local.get $3 i32.load - i32.const 0 call $~lib/rt/pure/__retainRelease local.tee $0 if (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $2 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -9524,24 +11247,24 @@ local.get $2 i32.lt_s if + local.get $0 local.get $4 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join local.tee $5 call $~lib/string/String.__concat local.tee $7 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9552,10 +11275,10 @@ local.get $6 if local.get $1 - i32.const 4320 + local.get $1 + i32.const 4512 call $~lib/string/String.__concat local.tee $5 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9568,24 +11291,24 @@ br $repeat|0 end end + local.get $0 local.get $2 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join local.tee $2 call $~lib/string/String.__concat local.tee $3 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $2 @@ -9593,24 +11316,24 @@ local.get $3 call $~lib/rt/pure/__release end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 4320 + (func $~lib/array/Array<~lib/array/Array>#join (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 call $~lib/array/Array<~lib/array/Array>#join_arr local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 199 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9618,7 +11341,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $0 @@ -9629,18 +11352,18 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $1 - i32.const 4316 + i32.const 4508 i32.load i32.const 1 i32.shr_u @@ -9653,20 +11376,20 @@ local.get $2 i32.eqz if + i32.const 0 local.get $3 i32.load - i32.const 0 call $~lib/rt/pure/__retainRelease local.tee $0 if (result i32) local.get $0 call $~lib/array/Array<~lib/array/Array>#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $2 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -9680,23 +11403,23 @@ local.get $2 i32.lt_s if + local.get $0 local.get $4 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 call $~lib/array/Array<~lib/array/Array>#join local.tee $5 call $~lib/string/String.__concat local.tee $7 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9707,10 +11430,10 @@ local.get $6 if local.get $1 - i32.const 4320 + local.get $1 + i32.const 4512 call $~lib/string/String.__concat local.tee $5 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $5 @@ -9723,23 +11446,23 @@ br $repeat|0 end end + local.get $0 local.get $2 i32.const 2 i32.shl local.get $3 i32.add i32.load - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 if + local.get $1 local.get $1 local.get $0 call $~lib/array/Array<~lib/array/Array>#join local.tee $2 call $~lib/string/String.__concat local.tee $3 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $2 @@ -9747,13 +11470,13 @@ local.get $3 call $~lib/rt/pure/__release end - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release local.get $1 ) - (func $start:std/array (; 171 ;) (type $FUNCSIG$v) + (func $start:std/array (; 200 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9813,7 +11536,7 @@ call $~lib/array/Array.isArray<~lib/array/Array | null> if i32.const 0 - i32.const 128 + i32.const 376 i32.const 37 i32.const 2 call $~lib/builtins/abort @@ -9825,7 +11548,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 38 i32.const 2 call $~lib/builtins/abort @@ -9841,7 +11564,7 @@ call $~lib/array/Array.isArray if i32.const 0 - i32.const 128 + i32.const 376 i32.const 39 i32.const 2 call $~lib/builtins/abort @@ -9860,17 +11583,17 @@ call $~lib/array/Array.isArray if i32.const 0 - i32.const 128 + i32.const 376 i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 168 + i32.const 416 call $~lib/array/Array.isArray if i32.const 0 - i32.const 128 + i32.const 376 i32.const 42 i32.const 2 call $~lib/builtins/abort @@ -9883,7 +11606,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 192 + i32.const 440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $6 @@ -9898,7 +11621,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 216 + i32.const 464 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -9906,7 +11629,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 50 i32.const 2 call $~lib/builtins/abort @@ -9922,7 +11645,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 344 + i32.const 536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 @@ -9930,7 +11653,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 53 i32.const 2 call $~lib/builtins/abort @@ -9946,7 +11669,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 368 + i32.const 560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -9954,7 +11677,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 56 i32.const 2 call $~lib/builtins/abort @@ -9970,7 +11693,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 392 + i32.const 584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -9978,7 +11701,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 59 i32.const 2 call $~lib/builtins/abort @@ -9994,7 +11717,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 416 + i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -10002,7 +11725,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 62 i32.const 2 call $~lib/builtins/abort @@ -10025,7 +11748,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 440 + i32.const 632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $6 @@ -10040,7 +11763,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 480 + i32.const 672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -10049,7 +11772,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 69 i32.const 2 call $~lib/builtins/abort @@ -10065,7 +11788,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 520 + i32.const 712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 @@ -10074,7 +11797,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 72 i32.const 2 call $~lib/builtins/abort @@ -10090,7 +11813,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 560 + i32.const 752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -10099,7 +11822,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 75 i32.const 2 call $~lib/builtins/abort @@ -10115,7 +11838,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 600 + i32.const 792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -10124,7 +11847,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 78 i32.const 2 call $~lib/builtins/abort @@ -10140,7 +11863,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 640 + i32.const 832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -10149,7 +11872,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 81 i32.const 2 call $~lib/builtins/abort @@ -10173,7 +11896,7 @@ i32.load offset=12 if i32.const 0 - i32.const 128 + i32.const 376 i32.const 87 i32.const 2 call $~lib/builtins/abort @@ -10183,7 +11906,7 @@ call $std/array/internalCapacity if i32.const 0 - i32.const 128 + i32.const 376 i32.const 88 i32.const 2 call $~lib/builtins/abort @@ -10199,7 +11922,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 92 i32.const 2 call $~lib/builtins/abort @@ -10211,7 +11934,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 93 i32.const 2 call $~lib/builtins/abort @@ -10223,7 +11946,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 94 i32.const 2 call $~lib/builtins/abort @@ -10235,7 +11958,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 98 i32.const 2 call $~lib/builtins/abort @@ -10245,7 +11968,7 @@ i32.load offset=12 if i32.const 0 - i32.const 128 + i32.const 376 i32.const 99 i32.const 2 call $~lib/builtins/abort @@ -10257,7 +11980,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 100 i32.const 2 call $~lib/builtins/abort @@ -10272,7 +11995,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 104 i32.const 2 call $~lib/builtins/abort @@ -10284,7 +12007,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 105 i32.const 2 call $~lib/builtins/abort @@ -10297,7 +12020,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 106 i32.const 2 call $~lib/builtins/abort @@ -10312,7 +12035,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 110 i32.const 2 call $~lib/builtins/abort @@ -10324,7 +12047,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 111 i32.const 2 call $~lib/builtins/abort @@ -10337,7 +12060,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 112 i32.const 2 call $~lib/builtins/abort @@ -10350,7 +12073,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 113 i32.const 2 call $~lib/builtins/abort @@ -10365,7 +12088,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 117 i32.const 2 call $~lib/builtins/abort @@ -10377,7 +12100,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 118 i32.const 2 call $~lib/builtins/abort @@ -10390,7 +12113,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 119 i32.const 2 call $~lib/builtins/abort @@ -10403,7 +12126,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 120 i32.const 2 call $~lib/builtins/abort @@ -10416,7 +12139,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 121 i32.const 2 call $~lib/builtins/abort @@ -10434,7 +12157,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 130 i32.const 2 call $~lib/builtins/abort @@ -10446,7 +12169,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 131 i32.const 2 call $~lib/builtins/abort @@ -10458,7 +12181,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 132 i32.const 2 call $~lib/builtins/abort @@ -10468,7 +12191,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 728 + i32.const 920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -10480,7 +12203,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 135 i32.const 2 call $~lib/builtins/abort @@ -10493,7 +12216,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 137 i32.const 2 call $~lib/builtins/abort @@ -10506,7 +12229,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 138 i32.const 2 call $~lib/builtins/abort @@ -10519,7 +12242,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 139 i32.const 2 call $~lib/builtins/abort @@ -10532,10 +12255,10 @@ i32.const 47 call $~lib/array/Array#push local.get $0 - call $~lib/rt/pure/__release global.get $std/array/arr local.get $4 call $~lib/array/Array#concat + call $~lib/rt/pure/__skippedRelease local.set $0 global.get $std/array/arr call $std/array/internalCapacity @@ -10543,7 +12266,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 146 i32.const 2 call $~lib/builtins/abort @@ -10555,7 +12278,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 147 i32.const 2 call $~lib/builtins/abort @@ -10567,7 +12290,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 148 i32.const 2 call $~lib/builtins/abort @@ -10580,7 +12303,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 149 i32.const 2 call $~lib/builtins/abort @@ -10593,7 +12316,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 150 i32.const 2 call $~lib/builtins/abort @@ -10606,7 +12329,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 151 i32.const 2 call $~lib/builtins/abort @@ -10619,7 +12342,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 152 i32.const 2 call $~lib/builtins/abort @@ -10632,7 +12355,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 153 i32.const 2 call $~lib/builtins/abort @@ -10647,24 +12370,24 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 156 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/pure/__release global.get $std/array/arr i32.const 0 call $~lib/array/Array#concat + call $~lib/rt/pure/__skippedRelease local.tee $0 i32.load offset=12 i32.const 3 i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 159 i32.const 2 call $~lib/builtins/abort @@ -10677,7 +12400,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 160 i32.const 2 call $~lib/builtins/abort @@ -10686,7 +12409,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 744 + i32.const 936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -10695,24 +12418,24 @@ i32.load offset=12 if i32.const 0 - i32.const 128 + i32.const 376 i32.const 163 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/pure/__release local.get $5 global.get $std/array/arr call $~lib/array/Array#concat + call $~lib/rt/pure/__skippedRelease local.tee $0 i32.load offset=12 i32.const 3 i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 165 i32.const 2 call $~lib/builtins/abort @@ -10722,7 +12445,7 @@ i32.load offset=12 if i32.const 0 - i32.const 128 + i32.const 376 i32.const 166 i32.const 2 call $~lib/builtins/abort @@ -10738,14 +12461,14 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + i32.const 0 i32.const 5 i32.const 2 i32.const 3 - i32.const 760 + i32.const 952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $29 - i32.const 0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 0 @@ -10756,7 +12479,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 800 + i32.const 992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $31 @@ -10765,20 +12488,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 174 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 840 + i32.const 1032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $32 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 1 @@ -10789,7 +12512,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 880 + i32.const 1072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $34 @@ -10798,20 +12521,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 176 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 920 + i32.const 1112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $35 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 1 @@ -10822,7 +12545,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 960 + i32.const 1152 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $7 @@ -10831,20 +12554,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 178 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1000 + i32.const 1192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $10 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 2 @@ -10855,7 +12578,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1040 + i32.const 1232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $16 @@ -10864,20 +12587,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 180 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1080 + i32.const 1272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $17 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 0 @@ -10888,7 +12611,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1120 + i32.const 1312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $19 @@ -10897,20 +12620,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 182 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1160 + i32.const 1352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $20 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 1 @@ -10921,7 +12644,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1200 + i32.const 1392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $22 @@ -10930,20 +12653,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 184 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1240 + i32.const 1432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $23 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 1 @@ -10954,7 +12677,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1280 + i32.const 1472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $28 @@ -10963,20 +12686,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 186 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1320 + i32.const 1512 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $9 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 0 @@ -10987,7 +12710,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1360 + i32.const 1552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $12 @@ -10996,20 +12719,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 188 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1400 + i32.const 1592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 0 @@ -11020,7 +12743,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1440 + i32.const 1632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 @@ -11029,20 +12752,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 190 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1480 + i32.const 1672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $26 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const -4 @@ -11053,7 +12776,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1520 + i32.const 1712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $27 @@ -11062,20 +12785,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1560 + i32.const 1752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const -4 @@ -11086,7 +12809,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1600 + i32.const 1792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -11095,20 +12818,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 194 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1640 + i32.const 1832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $1 i32.const -4 @@ -11119,7 +12842,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1680 + i32.const 1872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -11128,7 +12851,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 196 i32.const 2 call $~lib/builtins/abort @@ -11217,7 +12940,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 204 i32.const 2 call $~lib/builtins/abort @@ -11229,7 +12952,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 205 i32.const 2 call $~lib/builtins/abort @@ -11242,7 +12965,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 206 i32.const 2 call $~lib/builtins/abort @@ -11255,7 +12978,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 207 i32.const 2 call $~lib/builtins/abort @@ -11268,7 +12991,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 208 i32.const 2 call $~lib/builtins/abort @@ -11281,7 +13004,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 209 i32.const 2 call $~lib/builtins/abort @@ -11296,7 +13019,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 213 i32.const 2 call $~lib/builtins/abort @@ -11308,7 +13031,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 214 i32.const 2 call $~lib/builtins/abort @@ -11321,7 +13044,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 215 i32.const 2 call $~lib/builtins/abort @@ -11334,7 +13057,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 216 i32.const 2 call $~lib/builtins/abort @@ -11347,7 +13070,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 217 i32.const 2 call $~lib/builtins/abort @@ -11360,7 +13083,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 218 i32.const 2 call $~lib/builtins/abort @@ -11373,7 +13096,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 219 i32.const 2 call $~lib/builtins/abort @@ -11387,7 +13110,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 228 i32.const 2 call $~lib/builtins/abort @@ -11399,7 +13122,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 229 i32.const 2 call $~lib/builtins/abort @@ -11411,7 +13134,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 230 i32.const 2 call $~lib/builtins/abort @@ -11424,7 +13147,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 231 i32.const 2 call $~lib/builtins/abort @@ -11437,7 +13160,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 232 i32.const 2 call $~lib/builtins/abort @@ -11450,7 +13173,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 233 i32.const 2 call $~lib/builtins/abort @@ -11463,7 +13186,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 234 i32.const 2 call $~lib/builtins/abort @@ -11477,7 +13200,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 238 i32.const 2 call $~lib/builtins/abort @@ -11489,7 +13212,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 239 i32.const 2 call $~lib/builtins/abort @@ -11501,7 +13224,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 240 i32.const 2 call $~lib/builtins/abort @@ -11514,7 +13237,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 241 i32.const 2 call $~lib/builtins/abort @@ -11527,7 +13250,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 242 i32.const 2 call $~lib/builtins/abort @@ -11540,7 +13263,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 243 i32.const 2 call $~lib/builtins/abort @@ -11555,7 +13278,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 251 i32.const 2 call $~lib/builtins/abort @@ -11567,7 +13290,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 252 i32.const 2 call $~lib/builtins/abort @@ -11580,7 +13303,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 253 i32.const 2 call $~lib/builtins/abort @@ -11593,7 +13316,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 254 i32.const 2 call $~lib/builtins/abort @@ -11606,7 +13329,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 255 i32.const 2 call $~lib/builtins/abort @@ -11626,7 +13349,7 @@ global.get $std/array/i if i32.const 0 - i32.const 128 + i32.const 376 i32.const 265 i32.const 2 call $~lib/builtins/abort @@ -11642,7 +13365,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 268 i32.const 2 call $~lib/builtins/abort @@ -11658,7 +13381,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 271 i32.const 2 call $~lib/builtins/abort @@ -11674,7 +13397,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 274 i32.const 2 call $~lib/builtins/abort @@ -11690,7 +13413,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 277 i32.const 2 call $~lib/builtins/abort @@ -11706,7 +13429,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 280 i32.const 2 call $~lib/builtins/abort @@ -11722,7 +13445,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 283 i32.const 2 call $~lib/builtins/abort @@ -11738,7 +13461,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 286 i32.const 2 call $~lib/builtins/abort @@ -11754,7 +13477,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 289 i32.const 2 call $~lib/builtins/abort @@ -11770,7 +13493,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 292 i32.const 2 call $~lib/builtins/abort @@ -11784,7 +13507,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 299 i32.const 2 call $~lib/builtins/abort @@ -11798,7 +13521,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 302 i32.const 2 call $~lib/builtins/abort @@ -11810,7 +13533,7 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 128 + i32.const 376 i32.const 305 i32.const 2 call $~lib/builtins/abort @@ -11822,7 +13545,7 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 128 + i32.const 376 i32.const 308 i32.const 2 call $~lib/builtins/abort @@ -11836,7 +13559,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 311 i32.const 2 call $~lib/builtins/abort @@ -11850,7 +13573,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 314 i32.const 2 call $~lib/builtins/abort @@ -11864,7 +13587,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 317 i32.const 2 call $~lib/builtins/abort @@ -11878,7 +13601,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 320 i32.const 2 call $~lib/builtins/abort @@ -11892,7 +13615,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 323 i32.const 2 call $~lib/builtins/abort @@ -11906,7 +13629,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 326 i32.const 2 call $~lib/builtins/abort @@ -11923,7 +13646,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 330 i32.const 2 call $~lib/builtins/abort @@ -11935,7 +13658,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 331 i32.const 2 call $~lib/builtins/abort @@ -11948,7 +13671,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 332 i32.const 2 call $~lib/builtins/abort @@ -11961,7 +13684,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 333 i32.const 2 call $~lib/builtins/abort @@ -11970,7 +13693,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1720 + i32.const 1912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $38 @@ -11983,7 +13706,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1760 + i32.const 1952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $40 @@ -11992,7 +13715,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 340 i32.const 2 call $~lib/builtins/abort @@ -12002,7 +13725,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 1800 + i32.const 1992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $41 @@ -12011,20 +13734,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 341 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1816 + i32.const 2008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $42 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 2 @@ -12034,7 +13757,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 1856 + i32.const 2048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $44 @@ -12043,7 +13766,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 344 i32.const 2 call $~lib/builtins/abort @@ -12053,7 +13776,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 1888 + i32.const 2080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $45 @@ -12062,20 +13785,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 345 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 1912 + i32.const 2104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $46 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 2 @@ -12085,7 +13808,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 1952 + i32.const 2144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $48 @@ -12094,7 +13817,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 348 i32.const 2 call $~lib/builtins/abort @@ -12104,7 +13827,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 1976 + i32.const 2168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $49 @@ -12113,20 +13836,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 2008 + i32.const 2200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $50 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const 0 @@ -12136,7 +13859,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2048 + i32.const 2240 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $52 @@ -12145,7 +13868,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 352 i32.const 2 call $~lib/builtins/abort @@ -12155,7 +13878,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2072 + i32.const 2264 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $29 @@ -12164,20 +13887,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 353 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 2104 + i32.const 2296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $30 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const -1 @@ -12187,7 +13910,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2144 + i32.const 2336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $32 @@ -12196,7 +13919,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 356 i32.const 2 call $~lib/builtins/abort @@ -12206,131 +13929,131 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $33 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 357 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2200 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $34 - local.get $0 - call $~lib/rt/pure/__retainRelease - local.tee $0 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $35 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2240 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $36 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 360 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2264 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 361 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2296 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - local.get $0 - call $~lib/rt/pure/__retainRelease - local.tee $0 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $15 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2336 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 364 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.const 2 - i32.const 3 i32.const 2360 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $17 + local.tee $33 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 365 + i32.const 376 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 i32.const 2392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $18 + local.tee $34 + call $~lib/rt/pure/__retainRelease + local.tee $0 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#splice + local.tee $35 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 2432 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $36 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 2456 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2488 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $10 + call $~lib/rt/pure/__retainRelease + local.tee $0 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.tee $15 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2528 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $16 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 364 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 2552 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $17 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $18 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const -7 @@ -12340,7 +14063,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2432 + i32.const 2624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $20 @@ -12349,7 +14072,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 368 i32.const 2 call $~lib/builtins/abort @@ -12359,7 +14082,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2456 + i32.const 2648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $21 @@ -12368,20 +14091,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 369 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 2488 + i32.const 2680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $22 - local.get $0 call $~lib/rt/pure/__retainRelease local.tee $0 i32.const -2 @@ -12391,7 +14114,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 2528 + i32.const 2720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $24 @@ -12400,110 +14123,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 372 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2544 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $28 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 373 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - local.get $0 - call $~lib/rt/pure/__retainRelease - local.tee $0 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $11 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 i32.const 376 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 377 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - local.get $0 - call $~lib/rt/pure/__retainRelease - local.tee $0 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.tee $25 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2720 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 380 + i32.const 372 i32.const 2 call $~lib/builtins/abort unreachable @@ -12515,46 +14136,46 @@ i32.const 2736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $28 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 381 + i32.const 376 + i32.const 373 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 i32.const 2776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 - local.get $0 + local.tee $9 call $~lib/rt/pure/__retainRelease local.tee $0 - i32.const 7 - i32.const 0 + i32.const 1 + i32.const -2 call $~lib/array/Array#splice - local.tee $2 + local.tee $11 i32.const 0 i32.const 2 i32.const 3 i32.const 2816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 + local.tee $12 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 384 + i32.const 376 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -12566,26 +14187,128 @@ i32.const 2832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $13 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 385 + i32.const 376 + i32.const 377 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 i32.const 2872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $14 + call $~lib/rt/pure/__retainRelease + local.tee $0 + i32.const 4 + i32.const 0 + call $~lib/array/Array#splice + local.tee $25 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 2912 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $26 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 380 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2928 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 381 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2968 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $27 + call $~lib/rt/pure/__retainRelease + local.tee $0 + i32.const 7 + i32.const 0 + call $~lib/array/Array#splice + local.tee $2 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 3008 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 384 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3024 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 385 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3064 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 call $~lib/rt/pure/__retainRelease local.tee $37 i32.const 7 @@ -12595,7 +14318,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 2912 + i32.const 3104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -12604,7 +14327,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 388 i32.const 2 call $~lib/builtins/abort @@ -12614,7 +14337,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 2928 + i32.const 3120 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -12623,7 +14346,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 389 i32.const 2 call $~lib/builtins/abort @@ -12758,7 +14481,7 @@ global.get $std/array/i if i32.const 0 - i32.const 128 + i32.const 376 i32.const 402 i32.const 2 call $~lib/builtins/abort @@ -12773,7 +14496,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 405 i32.const 2 call $~lib/builtins/abort @@ -12788,7 +14511,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 408 i32.const 2 call $~lib/builtins/abort @@ -12803,7 +14526,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 416 i32.const 2 call $~lib/builtins/abort @@ -12815,7 +14538,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 417 i32.const 2 call $~lib/builtins/abort @@ -12830,7 +14553,7 @@ i32.eq if i32.const 0 - i32.const 128 + i32.const 376 i32.const 419 i32.const 2 call $~lib/builtins/abort @@ -12857,7 +14580,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 432 i32.const 2 call $~lib/builtins/abort @@ -12869,7 +14592,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 433 i32.const 2 call $~lib/builtins/abort @@ -12888,7 +14611,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 443 i32.const 2 call $~lib/builtins/abort @@ -12899,7 +14622,7 @@ call $~lib/array/Array#every if i32.const 0 - i32.const 128 + i32.const 376 i32.const 446 i32.const 2 call $~lib/builtins/abort @@ -12912,7 +14635,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 454 i32.const 2 call $~lib/builtins/abort @@ -12924,7 +14647,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 455 i32.const 2 call $~lib/builtins/abort @@ -12935,7 +14658,7 @@ call $~lib/array/Array#every if i32.const 0 - i32.const 128 + i32.const 376 i32.const 457 i32.const 2 call $~lib/builtins/abort @@ -12960,7 +14683,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 470 i32.const 2 call $~lib/builtins/abort @@ -12972,7 +14695,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 471 i32.const 2 call $~lib/builtins/abort @@ -12991,7 +14714,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 481 i32.const 2 call $~lib/builtins/abort @@ -13002,7 +14725,7 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 128 + i32.const 376 i32.const 484 i32.const 2 call $~lib/builtins/abort @@ -13013,7 +14736,7 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 128 + i32.const 376 i32.const 492 i32.const 2 call $~lib/builtins/abort @@ -13025,7 +14748,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 493 i32.const 2 call $~lib/builtins/abort @@ -13038,7 +14761,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 495 i32.const 2 call $~lib/builtins/abort @@ -13061,7 +14784,7 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 128 + i32.const 376 i32.const 508 i32.const 2 call $~lib/builtins/abort @@ -13073,7 +14796,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 509 i32.const 2 call $~lib/builtins/abort @@ -13095,7 +14818,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 520 i32.const 2 call $~lib/builtins/abort @@ -13111,7 +14834,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 529 i32.const 2 call $~lib/builtins/abort @@ -13123,7 +14846,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -13139,7 +14862,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 533 i32.const 2 call $~lib/builtins/abort @@ -13167,7 +14890,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 547 i32.const 2 call $~lib/builtins/abort @@ -13179,7 +14902,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 548 i32.const 2 call $~lib/builtins/abort @@ -13200,7 +14923,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 573 i32.const 2 call $~lib/builtins/abort @@ -13243,7 +14966,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 587 i32.const 2 call $~lib/builtins/abort @@ -13259,7 +14982,7 @@ f32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 588 i32.const 2 call $~lib/builtins/abort @@ -13276,7 +14999,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 597 i32.const 2 call $~lib/builtins/abort @@ -13288,7 +15011,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 598 i32.const 2 call $~lib/builtins/abort @@ -13305,7 +15028,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 605 i32.const 2 call $~lib/builtins/abort @@ -13334,7 +15057,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 620 i32.const 2 call $~lib/builtins/abort @@ -13346,7 +15069,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 621 i32.const 2 call $~lib/builtins/abort @@ -13369,7 +15092,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 631 i32.const 2 call $~lib/builtins/abort @@ -13386,7 +15109,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 640 i32.const 2 call $~lib/builtins/abort @@ -13398,7 +15121,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 641 i32.const 2 call $~lib/builtins/abort @@ -13415,7 +15138,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 648 i32.const 2 call $~lib/builtins/abort @@ -13444,7 +15167,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 663 i32.const 2 call $~lib/builtins/abort @@ -13456,7 +15179,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 664 i32.const 2 call $~lib/builtins/abort @@ -13480,7 +15203,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 674 i32.const 2 call $~lib/builtins/abort @@ -13496,7 +15219,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 678 i32.const 2 call $~lib/builtins/abort @@ -13512,7 +15235,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 681 i32.const 2 call $~lib/builtins/abort @@ -13524,7 +15247,7 @@ call $~lib/array/Array#reduce if i32.const 0 - i32.const 128 + i32.const 376 i32.const 684 i32.const 2 call $~lib/builtins/abort @@ -13540,7 +15263,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 692 i32.const 2 call $~lib/builtins/abort @@ -13552,7 +15275,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 693 i32.const 2 call $~lib/builtins/abort @@ -13568,7 +15291,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 695 i32.const 2 call $~lib/builtins/abort @@ -13596,7 +15319,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 708 i32.const 2 call $~lib/builtins/abort @@ -13608,7 +15331,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 709 i32.const 2 call $~lib/builtins/abort @@ -13630,7 +15353,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 719 i32.const 2 call $~lib/builtins/abort @@ -13646,7 +15369,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 723 i32.const 2 call $~lib/builtins/abort @@ -13662,7 +15385,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 726 i32.const 2 call $~lib/builtins/abort @@ -13674,7 +15397,7 @@ call $~lib/array/Array#reduceRight if i32.const 0 - i32.const 128 + i32.const 376 i32.const 729 i32.const 2 call $~lib/builtins/abort @@ -13690,7 +15413,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 737 i32.const 2 call $~lib/builtins/abort @@ -13702,7 +15425,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 738 i32.const 2 call $~lib/builtins/abort @@ -13718,7 +15441,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 740 i32.const 2 call $~lib/builtins/abort @@ -13746,7 +15469,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 376 i32.const 753 i32.const 2 call $~lib/builtins/abort @@ -13756,7 +15479,7 @@ i32.load offset=12 if i32.const 0 - i32.const 128 + i32.const 376 i32.const 754 i32.const 2 call $~lib/builtins/abort @@ -13780,7 +15503,7 @@ i32.const 8 i32.const 2 i32.const 8 - i32.const 3200 + i32.const 3392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $11 @@ -13809,7 +15532,7 @@ i32.const 8 i32.const 2 i32.const 8 - i32.const 3248 + i32.const 3440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $12 @@ -13817,7 +15540,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 843 i32.const 2 call $~lib/builtins/abort @@ -13826,7 +15549,7 @@ i32.const 8 i32.const 3 i32.const 9 - i32.const 3296 + i32.const 3488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 @@ -13855,7 +15578,7 @@ i32.const 8 i32.const 3 i32.const 9 - i32.const 3376 + i32.const 3568 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $14 @@ -13863,7 +15586,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 847 i32.const 2 call $~lib/builtins/abort @@ -13872,7 +15595,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3456 + i32.const 3648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 @@ -13901,7 +15624,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3496 + i32.const 3688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $26 @@ -13910,7 +15633,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 851 i32.const 2 call $~lib/builtins/abort @@ -13919,7 +15642,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 3536 + i32.const 3728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 @@ -13948,7 +15671,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 3576 + i32.const 3768 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $27 @@ -13957,7 +15680,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 855 i32.const 2 call $~lib/builtins/abort @@ -13966,7 +15689,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3616 + i32.const 3808 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 @@ -13975,7 +15698,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3632 + i32.const 3824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $6 @@ -13984,7 +15707,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 3656 + i32.const 3848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -13993,7 +15716,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3680 + i32.const 3872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 @@ -14002,7 +15725,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3712 + i32.const 3904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -14031,7 +15754,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3800 + i32.const 3992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -14040,7 +15763,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 875 i32.const 2 call $~lib/builtins/abort @@ -14052,7 +15775,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 3824 + i32.const 4016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -14061,7 +15784,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 878 i32.const 2 call $~lib/builtins/abort @@ -14076,7 +15799,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 881 i32.const 2 call $~lib/builtins/abort @@ -14091,7 +15814,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 884 i32.const 2 call $~lib/builtins/abort @@ -14106,7 +15829,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 887 i32.const 2 call $~lib/builtins/abort @@ -14121,7 +15844,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 890 i32.const 2 call $~lib/builtins/abort @@ -14136,7 +15859,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 893 i32.const 2 call $~lib/builtins/abort @@ -14239,7 +15962,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 4072 + i32.const 4264 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -14248,7 +15971,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 4120 + i32.const 4312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -14280,7 +16003,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 930 i32.const 2 call $~lib/builtins/abort @@ -14321,25 +16044,25 @@ i32.const 2 i32.const 0 i32.const 15 - i32.const 4240 + i32.const 4432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $9 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $9 call $~lib/array/Array#join_bool local.set $11 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $11 - i32.const 4344 + i32.const 4536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 941 i32.const 2 call $~lib/builtins/abort @@ -14348,19 +16071,19 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 4384 + i32.const 4576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 - i32.const 4056 + i32.const 4248 call $~lib/array/Array#join local.tee $26 - i32.const 4888 + i32.const 5080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 942 i32.const 2 call $~lib/builtins/abort @@ -14369,19 +16092,19 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 4920 + i32.const 5112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 - i32.const 4952 + i32.const 5144 call $~lib/array/Array#join local.tee $27 - i32.const 4888 + i32.const 5080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 943 i32.const 2 call $~lib/builtins/abort @@ -14390,19 +16113,19 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 4976 + i32.const 5168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 - i32.const 5000 + i32.const 5192 call $~lib/array/Array#join local.tee $6 - i32.const 5024 + i32.const 5216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 944 i32.const 2 call $~lib/builtins/abort @@ -14411,25 +16134,25 @@ i32.const 6 i32.const 3 i32.const 9 - i32.const 5088 + i32.const 5280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $12 - i32.const 5152 + i32.const 5344 call $~lib/rt/pure/__retain drop local.get $12 call $~lib/array/Array#join_flt local.set $13 - i32.const 5152 + i32.const 5344 call $~lib/rt/pure/__release local.get $13 - i32.const 6352 + i32.const 6544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 945 i32.const 2 call $~lib/builtins/abort @@ -14438,19 +16161,19 @@ i32.const 3 i32.const 2 i32.const 14 - i32.const 6472 + i32.const 6664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 - i32.const 4056 + i32.const 4248 call $~lib/array/Array<~lib/string/String>#join local.tee $5 - i32.const 6448 + i32.const 6640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 946 i32.const 2 call $~lib/builtins/abort @@ -14480,21 +16203,21 @@ local.get $1 call $~lib/rt/pure/__retain local.set $14 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $14 call $~lib/array/Array#join_ref local.set $1 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 - i32.const 6552 + i32.const 6744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 948 i32.const 2 call $~lib/builtins/abort @@ -14535,7 +16258,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 6632 + i32.const 6824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $15 @@ -14544,7 +16267,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 6648 + i32.const 6840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $16 @@ -14553,7 +16276,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 6672 + i32.const 6864 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $17 @@ -14562,7 +16285,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 6696 + i32.const 6888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $18 @@ -14571,12 +16294,12 @@ local.get $29 call $~lib/array/Array#toString local.tee $19 - i32.const 4056 + i32.const 4248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 958 i32.const 2 call $~lib/builtins/abort @@ -14585,12 +16308,12 @@ local.get $30 call $~lib/array/Array#toString local.tee $20 - i32.const 6448 + i32.const 6640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 959 i32.const 2 call $~lib/builtins/abort @@ -14599,12 +16322,12 @@ local.get $31 call $~lib/array/Array#toString local.tee $21 - i32.const 6728 + i32.const 6920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 960 i32.const 2 call $~lib/builtins/abort @@ -14613,12 +16336,12 @@ local.get $32 call $~lib/array/Array#toString local.tee $22 - i32.const 6752 + i32.const 6944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 961 i32.const 2 call $~lib/builtins/abort @@ -14627,25 +16350,25 @@ i32.const 3 i32.const 0 i32.const 20 - i32.const 6784 + i32.const 6976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $33 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $33 call $~lib/array/Array#join_int local.set $2 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $2 - i32.const 6808 + i32.const 7000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 963 i32.const 2 call $~lib/builtins/abort @@ -14654,25 +16377,25 @@ i32.const 3 i32.const 1 i32.const 21 - i32.const 6840 + i32.const 7032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $34 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $34 call $~lib/array/Array#join_int local.set $6 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $6 - i32.const 6864 + i32.const 7056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 964 i32.const 2 call $~lib/builtins/abort @@ -14681,25 +16404,25 @@ i32.const 3 i32.const 3 i32.const 16 - i32.const 6904 + i32.const 7096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $35 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $35 call $~lib/array/Array#join_int local.set $4 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $4 - i32.const 6944 + i32.const 7136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 965 i32.const 2 call $~lib/builtins/abort @@ -14708,25 +16431,25 @@ i32.const 4 i32.const 3 i32.const 22 - i32.const 7008 + i32.const 7200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $36 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $36 call $~lib/array/Array#join_int local.set $5 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $5 - i32.const 7056 + i32.const 7248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 966 i32.const 2 call $~lib/builtins/abort @@ -14735,7 +16458,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 7160 + i32.const 7352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $23 @@ -14743,12 +16466,12 @@ local.tee $24 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $28 - i32.const 7208 + i32.const 7400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 970 i32.const 2 call $~lib/builtins/abort @@ -14757,18 +16480,18 @@ i32.const 4 i32.const 2 i32.const 14 - i32.const 7304 + i32.const 7496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $9 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $11 - i32.const 7336 + i32.const 7528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 971 i32.const 2 call $~lib/builtins/abort @@ -14785,7 +16508,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7368 + i32.const 7560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $12 @@ -14795,7 +16518,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7392 + i32.const 7584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 @@ -14804,21 +16527,21 @@ local.get $3 call $~lib/rt/pure/__retain local.set $7 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $7 call $~lib/array/Array<~lib/array/Array>#join_arr local.set $1 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $1 - i32.const 7416 + i32.const 7608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 974 i32.const 2 call $~lib/builtins/abort @@ -14835,7 +16558,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7448 + i32.const 7640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $14 @@ -14845,7 +16568,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7472 + i32.const 7664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 @@ -14854,21 +16577,21 @@ local.get $3 call $~lib/rt/pure/__retain local.set $10 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $10 call $~lib/array/Array<~lib/array/Array>#join_arr local.set $3 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $3 - i32.const 7416 + i32.const 7608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 977 i32.const 2 call $~lib/builtins/abort @@ -14892,7 +16615,7 @@ i32.const 1 i32.const 2 i32.const 7 - i32.const 7496 + i32.const 7688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $27 @@ -14905,21 +16628,21 @@ local.get $26 call $~lib/rt/pure/__retain local.set $8 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__retain drop local.get $8 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr local.set $0 - i32.const 4320 + i32.const 4512 call $~lib/rt/pure/__release local.get $0 - i32.const 6448 + i32.const 6640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 980 i32.const 2 call $~lib/builtins/abort @@ -15000,7 +16723,7 @@ local.get $8 call $~lib/rt/pure/__release ) - (func $std/array/main (; 172 ;) (type $FUNCSIG$v) + (func $std/array/main (; 201 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -15009,1023 +16732,7 @@ global.set $~lib/started end ) - (func $~lib/rt/pure/markGray (; 173 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/tlsf/removeBlock (; 174 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $2 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 175 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $3 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $2 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 3 - i32.and - local.get $2 - i32.or - local.tee $3 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $5 - end - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $2 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $7 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $3 - i32.store - local.get $2 - else - local.get $1 - end - local.set $1 - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 7520 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $4 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $4 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $4 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.set $2 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $2 - i32.store offset=20 - local.get $2 - if - local.get $2 - local.get $1 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/freeBlock (; 176 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - i32.const 0 - i32.const 7520 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/rt/pure/scanBlack (; 177 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 178 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 179 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__collect (; 180 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $5 - local.tee $2 - local.set $3 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $repeat|0 - block $break|0 - local.get $3 - local.get $0 - i32.ge_u - br_if $break|0 - local.get $3 - i32.load - local.tee $4 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - else - i32.const 0 - local.get $1 - i32.const 268435455 - i32.and - i32.eqz - local.get $1 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $1 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $repeat|0 - end - end - local.get $2 - global.set $~lib/rt/pure/CUR - local.get $5 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|1 - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|1 - end - end - local.get $5 - local.set $0 - loop $repeat|2 - block $break|2 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|2 - local.get $0 - i32.load - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|2 - end - end - local.get $5 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/__instanceof (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.tee $0 - i32.const 7696 - i32.load - i32.le_u - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 7700 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/rt/__typeinfo (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 7696 - i32.load - i32.gt_u - if - i32.const 240 - i32.const 7568 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 7700 - i32.add - i32.load - ) - (func $~lib/rt/pure/increment (; 183 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 7608 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 7608 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 7908 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/growRoots (; 185 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - local.tee $0 - i32.const 256 - local.get $0 - i32.const 256 - i32.gt_u - select - local.tee $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $2 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - global.set $~lib/rt/pure/ROOTS - local.get $0 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $0 - local.get $3 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 186 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 187 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/pure/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 7608 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 7608 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - end - end - ) - (func $~lib/rt/pure/__retainRelease (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.const 7908 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $1 - i32.const 7908 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (; 189 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 7908 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $0 - loop $continue|0 - local.get $2 - local.get $0 - i32.lt_u - if - local.get $2 - i32.load - local.tee $3 - if - local.get $3 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - ) - (func $~lib/rt/pure/__visit (; 191 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 202 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 i32.const 7908 i32.lt_u @@ -16070,7 +16777,7 @@ i32.le_u if i32.const 0 - i32.const 7608 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -16103,7 +16810,7 @@ i32.ne if i32.const 0 - i32.const 7608 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -16128,14 +16835,45 @@ br $break|0 end i32.const 0 - i32.const 7608 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (; 192 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 203 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $0 + loop $continue|0 + local.get $2 + local.get $0 + i32.lt_u + if + local.get $2 + i32.load + local.tee $3 + if + local.get $3 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + ) + (func $~lib/rt/__visit_members (; 204 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $block$4$break block $switch$1$default block $switch$1$case$27 @@ -16206,733 +16944,7 @@ call $~lib/rt/pure/__visit end ) - (func $~lib/rt/tlsf/prepareSize (; 193 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 7656 - i32.const 7520 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/prepareBlock (; 194 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 7520 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/searchBlock (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/addMemory (; 196 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 7520 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 7520 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/growMemory (; 197 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/allocateBlock (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 7520 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/reallocateBlock (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - i32.const 0 - i32.const 7520 - i32.const 491 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - local.get $3 - ) - (func $~lib/rt/tlsf/__realloc (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 552 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 553 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/initializeRoot (; 201 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 7920 - i32.const 0 - i32.store - i32.const 9488 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 7920 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 7920 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 7920 - i32.const 9504 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 7920 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/__alloc (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/__free (; 203 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 560 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 561 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $null (; 204 ;) (type $FUNCSIG$v) + (func $null (; 205 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index e88cb77b..61ada9dc 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -1,11 +1,13 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$fii (func (param i32 i32) (result f32))) (type $FUNCSIG$d (func (result f64))) @@ -16,7 +18,6 @@ (type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$id (func (param f64) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) @@ -25,88 +26,85 @@ (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$iiij (func (param i32 i32 i64) (result i32))) - (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) + (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 112) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 152) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 176) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 200) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 224) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 280) "\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 328) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 352) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 376) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 400) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 424) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 464) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 584) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 664) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 712) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 728) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 744) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 784) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 824) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 864) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 904) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 944) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 984) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1064) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1104) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1144) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1184) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1224) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1264) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1304) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1344) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1384) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1424) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1464) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1504) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1544) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1584) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1704) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1744) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1784) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1800) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1840) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1872) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 256) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 304) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 360) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 400) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 424) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") + (data (i32.const 448) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 472) "\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 520) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") + (data (i32.const 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") + (data (i32.const 568) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 592) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 656) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 696) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 736) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 856) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 904) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 920) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 976) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1016) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1056) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1096) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1136) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") + (data (i32.const 1176) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1216) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1256) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1296) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1336) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1416) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1456) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1496) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1536) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1576) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1616) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1656) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1696) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1736) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1776) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1816) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1856) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") (data (i32.const 1896) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1936) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 1960) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") + (data (i32.const 1936) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 1976) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 1992) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2032) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 2056) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2032) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2064) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") (data (i32.const 2088) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2128) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2152) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 2128) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") + (data (i32.const 2152) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") (data (i32.const 2184) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2224) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2248) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 2224) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 2248) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2280) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2320) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00") - (data (i32.const 2344) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") + (data (i32.const 2320) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2344) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") (data (i32.const 2376) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2416) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 2440) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2416) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2440) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") (data (i32.const 2472) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2512) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2528) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2512) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00") + (data (i32.const 2536) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") (data (i32.const 2568) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2608) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2624) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 2608) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 2632) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2664) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2704) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2720) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") @@ -116,99 +114,105 @@ (data (i32.const 2856) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") (data (i32.const 2896) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2912) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2952) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 2992) "\ac\00\00\00\01\00\00\00\01\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") - (data (i32.const 3184) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") - (data (i32.const 3232) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 3280) "@\00\00\00\01\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 3360) "@\00\00\00\01\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 3440) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 3480) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 3520) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 3560) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 3600) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3616) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 3640) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00") - (data (i32.const 3664) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 3696) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 3728) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.\00") - (data (i32.const 3784) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 3808) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 3832) "^\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 3944) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 3968) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 3992) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 4016) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 4040) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 4056) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00x\0f\00\00\90\0f\00\00x\0f\00\00\a8\0f\00\00\c0\0f\00\00\d8\0f\00\00\00\00\00\00") - (data (i32.const 4104) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\d8\0f\00\00x\0f\00\00x\0f\00\00\a8\0f\00\00\90\0f\00\00\c0\0f\00\00\00\00\00\00") - (data (i32.const 4152) "\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 4200) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 4224) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\00") - (data (i32.const 4248) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 4272) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 4304) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") - (data (i32.const 4328) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") - (data (i32.const 4368) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 4400) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") - (data (i32.const 4424) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 4840) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00X\11\00\00X\11\00\00\90\01\00\00d\00\00\00") - (data (i32.const 4872) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00") - (data (i32.const 4904) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 4936) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") - (data (i32.const 4960) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 4984) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_\00") - (data (i32.const 5008) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 5072) "0\00\00\00\01\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 5136) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 5160) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 5184) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 5208) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 5248) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 5280) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") + (data (i32.const 3376) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data (i32.const 3424) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data (i32.const 3472) "@\00\00\00\01\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 3552) "@\00\00\00\01\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data (i32.const 3632) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") + (data (i32.const 3672) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 3712) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") + (data (i32.const 3752) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 3792) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3808) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 3832) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00") + (data (i32.const 3856) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 3888) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 3920) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.\00") + (data (i32.const 3976) "\04\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00") + (data (i32.const 4000) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 4024) "^\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 4136) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 4160) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 4184) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") + (data (i32.const 4208) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00b\00a\00") + (data (i32.const 4232) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 4248) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\008\10\00\00P\10\00\008\10\00\00h\10\00\00\80\10\00\00\98\10\00\00\00\00\00\00") + (data (i32.const 4296) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\98\10\00\008\10\00\008\10\00\00h\10\00\00P\10\00\00\80\10\00\00\00\00\00\00") + (data (i32.const 4344) "\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 4392) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 4416) "\02\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\01\00") + (data (i32.const 4440) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00") + (data (i32.const 4464) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") + (data (i32.const 4496) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00,\00") + (data (i32.const 4520) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") + (data (i32.const 4560) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 4592) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000\00") + (data (i32.const 4616) "\90\01\00\00\01\00\00\00\00\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 5032) "\10\00\00\00\01\00\00\00\07\00\00\00\10\00\00\00\18\12\00\00\18\12\00\00\90\01\00\00d\00\00\00") + (data (i32.const 5064) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00") + (data (i32.const 5096) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 5128) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00-\00") + (data (i32.const 5152) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 5176) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00_\00_\00") + (data (i32.const 5200) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00") + (data (i32.const 5264) "0\00\00\00\01\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") + (data (i32.const 5328) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00,\00 \00") + (data (i32.const 5352) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\000\00.\000\00") + (data (i32.const 5376) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00") + (data (i32.const 5400) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 5440) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 5472) "\b8\02\00\00\01\00\00\00\00\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/array/i (mut i32) (i32.const 0)) @@ -218,7 +222,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 $std/array/charset i32 (i32.const 3008)) + (global $std/array/charset i32 (i32.const 3200)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) @@ -230,14 +234,9 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 7696)) (global $~lib/heap/HEAP_BASE i32 (i32.const 7908)) (export "memory" (memory $0)) - (export "main" (func $std/array/main)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) (export "__realloc" (func $~lib/rt/tlsf/__realloc)) (export "__free" (func $~lib/rt/tlsf/__free)) @@ -246,217 +245,1351 @@ (export "__collect" (func $~lib/rt/pure/__collect)) (export "__instanceof" (func $~lib/rt/__instanceof)) (export "__typeinfo" (func $~lib/rt/__typeinfo)) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (export "main" (func $std/array/main)) + (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $1 - i32.const 1073741808 + i32.load + local.set $2 local.get $2 - i32.shr_u - i32.gt_u + i32.const 1 + i32.and + i32.eqz if + i32.const 0 i32.const 24 - i32.const 72 - i32.const 14 - i32.const 56 + i32.const 275 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 290 + i32.const 13 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $3 - block (result i32) + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + i32.eq + if + block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + end + local.get $7 i32.eqz if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $8 + block $~lib/rt/tlsf/SETSL|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $8 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $8 + local.set $9 + local.get $11 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store offset=4 + end + local.get $8 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 end - local.tee $4 - local.get $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 ) - (func $~lib/array/Array#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - i32.const 1 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array.isArray<~lib/array/Array> (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - i32.const 1 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $std/array/P#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 i32.eqz if i32.const 0 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 + i32.const 24 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable end - local.get $0 - ) - (func $~lib/array/Array.isArray (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - i32.const 0 - if (result i32) - local.get $0 + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - i32.ne + i32.const 24 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + end + local.set $3 + local.get $3 + i32.load + local.set $6 + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $3 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u else i32.const 0 end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.set $7 + local.get $3 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $0 + local.set $12 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $1 + local.set $7 + local.get $12 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + end + ) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (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 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory local.set $1 local.get $0 - call $~lib/rt/pure/__release + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/typedarray/Uint8Array#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 + local.get $2 + i32.gt_u + select ) - (func $~lib/array/Array.isArray (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - ) - (func $~lib/array/Array.isArray<~lib/string/String> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - drop - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add ) (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -664,7 +1797,1050 @@ end end ) - (func $~lib/rt/__allocArray (; 16 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 16 ;) (type $FUNCSIG$iiii) (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.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $6 + local.get $6 + i32.load + local.set $7 + local.get $7 + i32.const 1 + i32.and + if + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $5 + local.get $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $8 + local.get $8 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $8 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $8 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + local.get $8 + ) + (func $~lib/rt/tlsf/__realloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + ) + (func $~lib/rt/tlsf/__free (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/increment (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/RTTI_BASE + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 176 + i32.const 232 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/pure/growRoots (; 23 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + global.get $~lib/rt/pure/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $5 + global.set $~lib/rt/pure/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/pure/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 8 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/pure/__release (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/rt/pure/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/__collect (; 31 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + local.get $0 + local.set $1 + block $break|0 + block + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + end + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $5 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $1 + local.get $4 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + else + local.get $5 + i32.const 1879048192 + i32.and + i32.const 0 + i32.eq + if (result i32) + local.get $5 + i32.const 268435455 + i32.and + i32.eqz + else + i32.const 0 + end + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $5 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + end + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + global.set $~lib/rt/pure/CUR + block $break|1 + local.get $0 + local.set $5 + loop $repeat|1 + local.get $5 + local.get $1 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $5 + i32.load + call $~lib/rt/pure/scan + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + block $break|2 + local.get $0 + local.set $5 + loop $repeat|2 + local.get $5 + local.get $1 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $5 + i32.load + local.set $4 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + local.get $4 + call $~lib/rt/pure/collectWhite + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/__instanceof (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=8 + local.set $2 + global.get $~lib/rt/RTTI_BASE + local.set $3 + local.get $2 + local.get $3 + i32.load + i32.le_u + if + loop $continue|0 + local.get $2 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const 8 + i32.mul + i32.add + i32.load offset=4 + local.tee $2 + br_if $continue|0 + end + end + i32.const 0 + ) + (func $~lib/rt/pure/__retainRelease (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.ne + if + global.get $~lib/heap/HEAP_BASE + local.set $2 + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + end + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 272 + i32.const 320 + i32.const 14 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + block (result i32) + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + end + local.tee $4 + local.get $4 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + ) + (func $~lib/array/Array#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + i32.const 1 + if (result i32) + local.get $0 + i32.const 0 + i32.ne + else + i32.const 0 + end + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + ) + (func $~lib/array/Array.isArray<~lib/array/Array> (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + i32.const 1 + if (result i32) + local.get $0 + i32.const 0 + i32.ne + else + i32.const 0 + end + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + ) + (func $std/array/P#constructor (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $~lib/array/Array.isArray (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + i32.const 0 + if (result i32) + local.get $0 + i32.const 0 + i32.ne + else + i32.const 0 + end + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + ) + (func $~lib/typedarray/Uint8Array#constructor (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + i32.const 0 + if (result i32) + local.get $0 + i32.const 0 + i32.ne + else + i32.const 0 + end + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + ) + (func $~lib/array/Array.isArray (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + if (result i32) + local.get $0 + i32.const 0 + i32.ne + else + i32.const 0 + end + ) + (func $~lib/array/Array.isArray<~lib/string/String> (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + i32.const 0 + if (result i32) + local.get $0 + i32.const 0 + i32.ne + else + i32.const 0 + end + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + ) + (func $~lib/rt/__allocArray (; 44 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -702,7 +2878,7 @@ end local.get $4 ) - (func $~lib/memory/memory.fill (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -965,7 +3141,7 @@ end end ) - (func $~lib/array/Array#fill (; 18 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 46 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1042,11 +3218,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#get:length (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -1055,7 +3231,7 @@ i32.add i32.load8_u ) - (func $~lib/array/Array#__get (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1063,8 +3239,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -1074,7 +3250,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/array/isArraysEqual (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1160,7 +3336,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#fill (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 51 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1247,11 +3423,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -1260,7 +3436,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1268,8 +3444,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -1279,7 +3455,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/array/isArraysEqual (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1365,17 +3541,17 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $std/array/internalCapacity (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/internalCapacity (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1396,7 +3572,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/array/ensureSize (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 59 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1416,8 +3592,8 @@ i32.shr_u i32.gt_u if - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -1459,7 +3635,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1486,7 +3662,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#__unchecked_get (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -1495,7 +3671,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1503,8 +3679,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -1514,7 +3690,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#pop (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1524,8 +3700,8 @@ i32.const 1 i32.lt_s if - i32.const 680 - i32.const 296 + i32.const 872 + i32.const 488 i32.const 250 i32.const 20 call $~lib/builtins/abort @@ -1547,7 +3723,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#concat (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1580,8 +3756,8 @@ local.get $1 call $~lib/rt/pure/__release block - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 197 i32.const 59 call $~lib/builtins/abort @@ -1624,7 +3800,19 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/array/Array#copyWithin (; 37 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/array/Array#copyWithin (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1812,7 +4000,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $std/array/isArraysEqual (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -1898,7 +4086,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#unshift (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#unshift (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1931,7 +4119,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#shift (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 69 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1943,8 +4131,8 @@ i32.const 1 i32.lt_s if - i32.const 680 - i32.const 296 + i32.const 872 + i32.const 488 i32.const 311 i32.const 20 call $~lib/builtins/abort @@ -1980,7 +4168,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#reverse (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#reverse (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2034,7 +4222,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#indexOf (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2103,7 +4291,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -2111,7 +4299,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2219,7 +4407,7 @@ i32.store offset=12 local.get $6 ) - (func $~lib/array/Array#__unchecked_set (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -2229,7 +4417,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2255,7 +4443,7 @@ i32.store offset=12 end ) - (func $start:std/array~anonymous|0 (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2268,7 +4456,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#findIndex (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2325,7 +4513,7 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2338,7 +4526,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|2 (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2351,7 +4539,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|3 (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 80 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2368,7 +4556,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|4 (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|4 (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2381,7 +4569,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|5 (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2397,7 +4585,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|6 (; 54 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2410,7 +4598,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#every (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2470,7 +4658,7 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2483,7 +4671,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|8 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2500,7 +4688,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|9 (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2513,7 +4701,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|10 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2529,7 +4717,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|11 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2542,7 +4730,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#some (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 90 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2599,7 +4787,7 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2612,7 +4800,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|13 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2629,7 +4817,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|14 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2642,7 +4830,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|15 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2658,7 +4846,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|16 (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 95 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2669,7 +4857,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array#forEach (; 67 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2719,7 +4907,7 @@ unreachable end ) - (func $start:std/array~anonymous|17 (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 97 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2734,7 +4922,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|18 (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|18 (; 98 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2745,7 +4933,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|19 (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 99 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/pure/__retain drop @@ -2759,7 +4947,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|20 (; 71 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -2869,7 +5057,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 570 i32.const 6 call $~lib/builtins/abort @@ -2879,7 +5067,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|21 (; 72 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 101 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) (local $3 f32) local.get $2 call $~lib/rt/pure/__retain @@ -2891,7 +5079,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#map (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2963,11 +5151,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 75 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 104 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -2976,7 +5164,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 76 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 105 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -2984,8 +5172,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -2995,7 +5183,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $start:std/array~anonymous|22 (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 106 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -3014,7 +5202,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#map (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3085,7 +5273,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|23 (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 108 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -3100,7 +5288,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|24 (; 80 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 109 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -3118,7 +5306,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|25 (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 110 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -3131,7 +5319,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#filter (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3200,7 +5388,7 @@ end local.get $2 ) - (func $start:std/array~anonymous|26 (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 112 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -3221,7 +5409,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|27 (; 84 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 113 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -3238,7 +5426,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|28 (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 114 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -3258,7 +5446,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $start:std/array~anonymous|29 (; 86 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 115 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3271,7 +5459,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#reduce (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 116 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3329,7 +5517,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|30 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|30 (; 117 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3342,7 +5530,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|31 (; 89 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 118 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3360,7 +5548,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#reduce (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 119 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3418,7 +5606,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|32 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 120 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3436,7 +5624,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|33 (; 92 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 121 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3453,7 +5641,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|34 (; 93 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|34 (; 122 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3466,7 +5654,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|35 (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 123 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3482,7 +5670,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|36 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|36 (; 124 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3495,7 +5683,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#reduceRight (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 125 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -3540,7 +5728,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|37 (; 97 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|37 (; 126 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3553,7 +5741,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|38 (; 98 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|38 (; 127 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3571,7 +5759,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/array/Array#reduceRight (; 99 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 128 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -3616,7 +5804,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|39 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|39 (; 129 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3634,7 +5822,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|40 (; 101 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|40 (; 130 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3651,7 +5839,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|41 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|41 (; 131 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3664,7 +5852,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $start:std/array~anonymous|42 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|42 (; 132 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 call $~lib/rt/pure/__retain @@ -3680,7 +5868,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/math/murmurHash3 (; 104 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/math/murmurHash3 (; 133 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 local.get $0 i64.const 33 @@ -3709,7 +5897,7 @@ local.set $0 local.get $0 ) - (func $~lib/math/splitMix32 (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 134 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -3744,12 +5932,12 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 106 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 135 ;) (type $FUNCSIG$vj) (param $0 i64) local.get $0 i64.eqz if i32.const 0 - i32.const 2968 + i32.const 3160 i32.const 1021 i32.const 4 call $~lib/builtins/abort @@ -3773,7 +5961,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 107 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 136 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -3865,7 +6053,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 108 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 137 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4160,7 +6348,7 @@ local.get $10 f32.store ) - (func $~lib/array/Array#sort (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -4239,7 +6427,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 110 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 139 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4272,7 +6460,7 @@ i32.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4291,12 +6479,12 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/builtins/isNaN (; 112 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 141 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $std/array/isArraysEqual (; 113 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 142 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4396,7 +6584,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/util/sort/insertionSort (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 143 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -4488,7 +6676,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 144 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4783,7 +6971,7 @@ local.get $10 f64.store ) - (func $~lib/array/Array#sort (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f64) @@ -4862,7 +7050,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 117 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 146 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -4895,7 +7083,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4914,11 +7102,11 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/array/Array#get:length (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 120 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 149 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -4927,7 +7115,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 121 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 150 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -4935,8 +7123,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -4946,12 +7134,12 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/builtins/isNaN (; 122 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 151 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $std/array/isArraysEqual (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 152 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5051,7 +7239,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/util/sort/insertionSort (; 124 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 153 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5143,7 +7331,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 125 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 154 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5438,7 +7626,7 @@ local.get $10 i32.store ) - (func $~lib/array/Array#sort (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5515,12 +7703,12 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -5539,7 +7727,7 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/util/sort/insertionSort (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 158 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5631,7 +7819,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 159 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5926,7 +8114,7 @@ local.get $10 i32.store ) - (func $~lib/array/Array#sort (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6003,7 +8191,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -6012,7 +8200,7 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -6031,14 +8219,14 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/array/Array.create (; 134 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 i32.gt_u if - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 45 i32.const 61 call $~lib/builtins/abort @@ -6062,7 +8250,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $std/array/createReverseOrderedArray (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6096,15 +8284,15 @@ end local.get $1 ) - (func $~lib/math/NativeMath.random (; 136 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 165 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) global.get $~lib/math/random_seeded i32.eqz if - i32.const 3744 - i32.const 2968 + i32.const 3936 + i32.const 3160 i32.const 1030 i32.const 24 call $~lib/builtins/abort @@ -6153,7 +8341,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6187,12 +8375,12 @@ end local.get $1 ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|1 (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $std/array/isSorted (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6252,7 +8440,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $std/array/assertSorted (; 140 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 169 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6266,7 +8454,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -6277,7 +8465,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/array/assertSortedDefault (; 141 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 170 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/rt/pure/__retain drop @@ -6290,34 +8478,34 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|43 (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|43 (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $start:std/array~anonymous|44 (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $start:std/array~anonymous|45 (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|45 (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $start:std/array~anonymous|46 (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|46 (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array.create<~lib/array/Array> (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/array/Array> (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 i32.gt_u if - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 45 i32.const 61 call $~lib/builtins/abort @@ -6341,7 +8529,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 147 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 176 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -6354,15 +8542,15 @@ i32.add local.set $3 local.get $3 - local.get $2 local.get $3 i32.load + local.get $2 call $~lib/rt/pure/__retainRelease i32.store local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 148 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 177 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -6377,8 +8565,8 @@ local.get $2 call $~lib/rt/pure/__release block - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 112 i32.const 38 call $~lib/builtins/abort @@ -6410,7 +8598,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/array/createReverseOrderedNestedArray (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6454,7 +8642,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6476,7 +8664,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 151 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 180 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6576,7 +8764,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/array/Array>#sort (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6651,11 +8839,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 182 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6665,14 +8853,14 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 97 i32.const 45 call $~lib/builtins/abort @@ -6685,8 +8873,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -6696,7 +8884,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted<~lib/array/Array> (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/array/Array> (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6768,7 +8956,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/array/assertSorted<~lib/array/Array> (; 157 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/array/Array> (; 186 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6782,7 +8970,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -6793,14 +8981,14 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/array/Array.create> (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create> (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 i32.gt_u if - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 45 i32.const 61 call $~lib/builtins/abort @@ -6824,7 +9012,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $std/array/Proxy#constructor (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Proxy#constructor (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if @@ -6839,7 +9027,7 @@ i32.store local.get $0 ) - (func $~lib/array/Array>#__unchecked_set (; 160 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__unchecked_set (; 189 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -6852,15 +9040,15 @@ i32.add local.set $3 local.get $3 - local.get $2 local.get $3 i32.load + local.get $2 call $~lib/rt/pure/__retainRelease i32.store local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array>#__set (; 161 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 190 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -6875,8 +9063,8 @@ local.get $2 call $~lib/rt/pure/__release block - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 112 i32.const 38 call $~lib/builtins/abort @@ -6908,7 +9096,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/array/createReverseOrderedElementsArray (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6948,7 +9136,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -6968,7 +9156,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/util/sort/insertionSort> (; 164 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort> (; 193 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7068,7 +9256,7 @@ unreachable end ) - (func $~lib/array/Array>#sort (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7143,11 +9331,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array>#get:length (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#get:length (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array>#__unchecked_get (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__unchecked_get (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -7157,14 +9345,14 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array>#__get (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__get (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 97 i32.const 45 call $~lib/builtins/abort @@ -7177,8 +9365,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -7188,7 +9376,7 @@ local.get $1 call $~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted> (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted> (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7260,7 +9448,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/array/assertSorted> (; 170 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted> (; 199 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -7274,7 +9462,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -7285,7 +9473,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/util/sort/insertionSort<~lib/string/String | null> (; 171 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String | null> (; 200 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7385,7 +9573,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/string/String | null>#sort (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#sort (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7460,11 +9648,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String | null>#get:length (; 173 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#get:length (; 202 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String | null>#__unchecked_get (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#__unchecked_get (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -7474,7 +9662,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String | null>#__get (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#__get (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7482,8 +9670,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -7493,7 +9681,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String | null>#__unchecked_get ) - (func $std/array/isSorted<~lib/string/String | null> (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String | null> (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7565,7 +9753,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/array/assertSorted<~lib/string/String | null> (; 177 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String | null> (; 206 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -7579,7 +9767,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -7590,7 +9778,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/string/String#get:length (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 207 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -7598,7 +9786,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 179 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 208 ;) (type $FUNCSIG$iiiiii) (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) @@ -7662,7 +9850,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7768,7 +9956,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 181 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $1of1 block $0of1 block $outOfRange @@ -7789,7 +9977,7 @@ local.get $1 call $std/array/assertSorted<~lib/string/String | null> ) - (func $~lib/string/String.__eq (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -7862,7 +10050,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__ne (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -7881,7 +10069,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 213 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7979,14 +10167,14 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/array/Array.create<~lib/string/String> (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/string/String> (; 214 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 i32.gt_u if - i32.const 24 - i32.const 296 + i32.const 272 + i32.const 488 i32.const 45 i32.const 61 call $~lib/builtins/abort @@ -8010,7 +10198,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/string/String#charAt (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.const 0 @@ -8018,7 +10206,7 @@ i32.eqz if i32.const 0 - i32.const 4168 + i32.const 4360 i32.const 40 i32.const 4 call $~lib/builtins/abort @@ -8029,7 +10217,7 @@ call $~lib/string/String#get:length i32.ge_u if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain return end @@ -8048,7 +10236,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#concat (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8061,8 +10249,8 @@ i32.const 0 i32.eq if - i32.const 4216 local.get $1 + i32.const 4408 call $~lib/rt/pure/__retainRelease local.set $1 end @@ -8084,7 +10272,7 @@ i32.const 0 i32.eq if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $5 local.get $1 @@ -8113,7 +10301,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -8122,7 +10310,7 @@ call $~lib/rt/pure/__retain drop local.get $0 - i32.const 4216 + i32.const 4408 local.get $0 i32.const 0 i32.ne @@ -8136,13 +10324,13 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/createRandomString (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 218 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) (local $4 i32) (local $5 i32) - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $1 block $break|0 @@ -8155,6 +10343,7 @@ i32.eqz br_if $break|0 local.get $1 + local.get $1 global.get $std/array/charset block $~lib/math/NativeMath.floor|inlined.0 (result f64) call $~lib/math/NativeMath.random @@ -8171,7 +10360,6 @@ local.tee $4 call $~lib/string/String.__concat local.tee $5 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $4 @@ -8189,7 +10377,7 @@ end local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 190 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 219 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8202,15 +10390,15 @@ i32.add local.set $3 local.get $3 - local.get $2 local.get $3 i32.load + local.get $2 call $~lib/rt/pure/__retainRelease i32.store local.get $2 call $~lib/rt/pure/__release ) - (func $~lib/array/Array<~lib/string/String>#__set (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/string/String>#__set (; 220 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/pure/__retain @@ -8225,8 +10413,8 @@ local.get $2 call $~lib/rt/pure/__release block - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 112 i32.const 38 call $~lib/builtins/abort @@ -8258,7 +10446,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $std/array/createRandomStringArray (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 221 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8296,7 +10484,7 @@ end local.get $1 ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (; 193 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String> (; 222 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8396,7 +10584,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/string/String>#sort (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#sort (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8471,11 +10659,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 195 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8485,14 +10673,14 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 3848 - i32.const 296 + i32.const 4040 + i32.const 488 i32.const 97 i32.const 45 call $~lib/builtins/abort @@ -8505,8 +10693,8 @@ i32.shr_u i32.ge_u if - i32.const 240 - i32.const 296 + i32.const 176 + i32.const 488 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -8516,7 +10704,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $std/array/isSorted<~lib/string/String> (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String> (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8588,7 +10776,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $std/array/assertSorted<~lib/string/String> (; 199 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String> (; 228 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -8602,7 +10790,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 832 i32.const 2 call $~lib/builtins/abort @@ -8613,7 +10801,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8719,7 +10907,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $std/array/assertSorted<~lib/string/String>|trampoline (; 201 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String>|trampoline (; 230 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $1of1 block $0of1 block $outOfRange @@ -8740,7 +10928,7 @@ local.get $1 call $std/array/assertSorted<~lib/string/String> ) - (func $~lib/string/String#substring (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8755,7 +10943,7 @@ i32.eqz if i32.const 0 - i32.const 4168 + i32.const 4360 i32.const 196 i32.const 4 call $~lib/builtins/abort @@ -8825,7 +11013,7 @@ local.get $3 i32.eqz if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain return end @@ -8859,7 +11047,7 @@ local.get $10 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#join_bool (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_bool (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8881,7 +11069,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -8895,8 +11083,8 @@ local.get $2 i32.eqz if - i32.const 4264 - i32.const 4288 + i32.const 4456 + i32.const 4480 local.get $4 i32.load8_u select @@ -8955,8 +11143,8 @@ i32.const 1 i32.shl i32.add - i32.const 4264 - i32.const 4288 + i32.const 4456 + i32.const 4480 local.get $10 select local.get $6 @@ -9010,8 +11198,8 @@ i32.const 1 i32.shl i32.add - i32.const 4264 - i32.const 4288 + i32.const 4456 + i32.const 4480 local.get $10 select local.get $6 @@ -9044,7 +11232,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -9058,7 +11246,7 @@ local.get $2 return ) - (func $~lib/util/number/decimalCount32 (; 205 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -9127,7 +11315,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa32_lut (; 206 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 235 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9135,7 +11323,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 4856 + i32.const 5048 i32.load offset=4 local.set $3 block $break|0 @@ -9268,7 +11456,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 207 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9278,7 +11466,7 @@ local.get $0 i32.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -9325,12 +11513,12 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 208 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 209 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9389,7 +11577,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9411,7 +11599,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -9543,7 +11731,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -9557,7 +11745,7 @@ local.get $2 return ) - (func $~lib/util/number/utoa32 (; 212 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9566,7 +11754,7 @@ local.get $0 i32.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -9594,12 +11782,12 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 213 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9638,7 +11826,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9660,7 +11848,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -9792,7 +11980,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -9806,14 +11994,14 @@ local.get $2 return ) - (func $~lib/builtins/isFinite (; 217 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 246 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/array/Array#__unchecked_get (; 218 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 247 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -9822,7 +12010,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__unchecked_get (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -9831,7 +12019,7 @@ i32.add i32.load16_s ) - (func $~lib/util/number/genDigits (; 220 ;) (type $FUNCSIG$iijijiji) (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 (; 249 ;) (type $FUNCSIG$iijijiji) (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) @@ -9886,7 +12074,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 6320 + i32.const 6512 i32.load offset=4 local.set $16 block $break|0 @@ -10387,7 +12575,7 @@ end local.get $15 ) - (func $~lib/util/number/prettify (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10717,7 +12905,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 222 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 251 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -10886,11 +13074,11 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 6008 + i32.const 6200 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 6232 + i32.const 6424 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow @@ -11155,7 +13343,7 @@ local.get $2 i32.add ) - (func $~lib/util/number/dtoa (; 223 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 252 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11163,7 +13351,7 @@ f64.const 0 f64.eq if - i32.const 5176 + i32.const 5368 call $~lib/rt/pure/__retain return end @@ -11174,12 +13362,12 @@ local.get $0 call $~lib/builtins/isNaN if - i32.const 5200 + i32.const 5392 call $~lib/rt/pure/__retain return end - i32.const 5224 - i32.const 5264 + i32.const 5416 + i32.const 5456 local.get $0 f64.const 0 f64.lt @@ -11214,7 +13402,7 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $~lib/util/number/dtoa_stream (; 224 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 253 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -11267,8 +13455,8 @@ i32.add local.set $4 local.get $0 - i32.const 5224 - i32.const 5264 + i32.const 5416 + i32.const 5456 local.get $3 select local.get $4 @@ -11285,7 +13473,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array#join_flt (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_flt (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11307,7 +13495,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -11439,7 +13627,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -11453,7 +13641,7 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11475,7 +13663,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -11520,13 +13708,13 @@ i32.lt_s i32.eqz br_if $break|0 + local.get $7 local.get $4 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -11570,13 +13758,13 @@ i32.lt_s i32.eqz br_if $break|1 + local.get $7 local.get $4 local.get $8 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -11627,13 +13815,13 @@ end unreachable end + local.get $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -11660,7 +13848,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/array/Array<~lib/string/String>#join (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -11674,7 +13862,7 @@ local.get $2 return ) - (func $std/array/Ref#constructor (; 229 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/Ref#constructor (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11686,7 +13874,7 @@ end local.get $0 ) - (func $~lib/array/Array#join_ref (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_ref (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11707,7 +13895,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -11721,7 +13909,7 @@ local.get $2 i32.eqz if - i32.const 6504 + i32.const 6696 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -11760,13 +13948,13 @@ i32.lt_s i32.eqz br_if $break|0 + local.get $9 local.get $4 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.get $9 call $~lib/rt/pure/__retainRelease local.set $9 local.get $9 @@ -11776,7 +13964,7 @@ i32.const 1 i32.shl i32.add - i32.const 6504 + i32.const 6696 i32.const 15 i32.const 1 i32.shl @@ -11824,7 +14012,7 @@ i32.const 1 i32.shl i32.add - i32.const 6504 + i32.const 6696 i32.const 15 i32.const 1 i32.shl @@ -11860,7 +14048,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -11874,12 +14062,12 @@ local.get $2 return ) - (func $~lib/array/Array#toString (; 232 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -11888,7 +14076,7 @@ call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11963,7 +14151,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11985,7 +14173,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -12117,7 +14305,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -12131,19 +14319,19 @@ local.get $2 return ) - (func $~lib/array/Array#toString (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 266 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 65535 i32.and call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 268 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12188,7 +14376,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12210,7 +14398,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -12342,7 +14530,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -12356,12 +14544,12 @@ local.get $2 return ) - (func $~lib/array/Array#toString (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join ) - (func $~lib/util/number/decimalCount64 (; 243 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 272 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -12430,7 +14618,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 244 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 273 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -12442,7 +14630,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 4856 + i32.const 5048 i32.load offset=4 local.set $3 block $break|0 @@ -12556,7 +14744,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 245 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 274 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12567,7 +14755,7 @@ local.get $0 i64.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -12625,12 +14813,12 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 246 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 275 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/util/number/itoa_stream (; 247 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 276 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12695,7 +14883,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12717,7 +14905,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -12849,7 +15037,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -12863,12 +15051,12 @@ local.get $2 return ) - (func $~lib/array/Array#toString (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa64 (; 251 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 280 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12880,7 +15068,7 @@ local.get $0 i64.eqz if - i32.const 4416 + i32.const 4608 call $~lib/rt/pure/__retain return end @@ -12959,12 +15147,12 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa (; 252 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 281 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/util/number/itoa_stream (; 253 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 282 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13051,7 +15239,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13073,7 +15261,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -13205,7 +15393,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -13219,12 +15407,12 @@ local.get $2 return ) - (func $~lib/array/Array#toString (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join ) - (func $~lib/array/Array<~lib/string/String | null>#join_str (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join_str (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13246,7 +15434,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -13291,13 +15479,13 @@ i32.lt_s i32.eqz br_if $break|0 + local.get $7 local.get $4 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -13341,13 +15529,13 @@ i32.lt_s i32.eqz br_if $break|1 + local.get $7 local.get $4 local.get $8 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -13398,13 +15586,13 @@ end unreachable end + local.get $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -13431,7 +15619,7 @@ call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -13445,17 +15633,17 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array<~lib/string/String | null>#join ) - (func $~lib/array/Array<~lib/string/String>#toString (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#toString (; 289 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13476,7 +15664,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -13484,7 +15672,7 @@ local.get $3 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $4 local.get $1 @@ -13498,9 +15686,9 @@ local.get $2 i32.eqz if + local.get $7 local.get $6 i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -13509,7 +15697,7 @@ local.get $1 call $~lib/array/Array#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $3 @@ -13531,17 +15719,18 @@ i32.lt_s i32.eqz br_if $break|0 + local.get $7 local.get $6 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -13549,7 +15738,6 @@ local.tee $8 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $8 @@ -13559,11 +15747,11 @@ end local.get $5 if + local.get $4 local.get $4 local.get $1 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $9 @@ -13578,17 +15766,18 @@ end unreachable end + local.get $7 local.get $6 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -13596,7 +15785,6 @@ local.tee $3 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $3 @@ -13612,7 +15800,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -13626,19 +15814,19 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 292 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/util/number/itoa (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 293 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 265 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13683,7 +15871,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13705,7 +15893,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -13837,7 +16025,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array#join (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -13851,7 +16039,7 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13872,7 +16060,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -13880,7 +16068,7 @@ local.get $3 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $4 local.get $1 @@ -13894,9 +16082,9 @@ local.get $2 i32.eqz if + local.get $7 local.get $6 i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -13905,7 +16093,7 @@ local.get $1 call $~lib/array/Array#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $3 @@ -13927,17 +16115,18 @@ i32.lt_s i32.eqz br_if $break|0 + local.get $7 local.get $6 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -13945,7 +16134,6 @@ local.tee $8 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $8 @@ -13955,11 +16143,11 @@ end local.get $5 if + local.get $4 local.get $4 local.get $1 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $9 @@ -13974,17 +16162,18 @@ end unreachable end + local.get $7 local.get $6 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -13992,7 +16181,6 @@ local.tee $3 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $3 @@ -14008,7 +16196,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -14022,12 +16210,12 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 299 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array<~lib/array/Array>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14048,7 +16236,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -14056,7 +16244,7 @@ local.get $3 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $4 local.get $1 @@ -14070,9 +16258,9 @@ local.get $2 i32.eqz if + local.get $7 local.get $6 i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -14081,7 +16269,7 @@ local.get $1 call $~lib/array/Array#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $3 @@ -14103,17 +16291,18 @@ i32.lt_s i32.eqz br_if $break|0 + local.get $7 local.get $6 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -14121,7 +16310,6 @@ local.tee $8 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $8 @@ -14131,11 +16319,11 @@ end local.get $5 if + local.get $4 local.get $4 local.get $1 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $9 @@ -14150,17 +16338,18 @@ end unreachable end + local.get $7 local.get $6 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -14168,7 +16357,6 @@ local.tee $3 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $3 @@ -14184,7 +16372,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -14198,7 +16386,7 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14219,7 +16407,7 @@ i32.const 0 i32.lt_s if - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $3 local.get $1 @@ -14227,7 +16415,7 @@ local.get $3 return end - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain local.set $4 local.get $1 @@ -14241,9 +16429,9 @@ local.get $2 i32.eqz if + local.get $7 local.get $6 i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 @@ -14252,7 +16440,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#join else - i32.const 4056 + i32.const 4248 call $~lib/rt/pure/__retain end local.set $3 @@ -14274,17 +16462,18 @@ i32.lt_s i32.eqz br_if $break|0 + local.get $7 local.get $6 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -14292,7 +16481,6 @@ local.tee $8 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $8 @@ -14302,11 +16490,11 @@ end local.get $5 if + local.get $4 local.get $4 local.get $1 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $9 @@ -14321,17 +16509,18 @@ end unreachable end + local.get $7 local.get $6 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.get $7 call $~lib/rt/pure/__retainRelease local.set $7 local.get $7 if + local.get $4 local.get $4 local.get $7 local.get $1 @@ -14339,7 +16528,6 @@ local.tee $3 call $~lib/string/String.__concat local.tee $9 - local.get $4 call $~lib/rt/pure/__retainRelease local.set $4 local.get $3 @@ -14355,7 +16543,7 @@ call $~lib/rt/pure/__release local.get $9 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/pure/__retain @@ -14369,12 +16557,12 @@ local.get $2 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 4320 + i32.const 4512 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) - (func $start:std/array (; 276 ;) (type $FUNCSIG$v) + (func $start:std/array (; 305 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14444,7 +16632,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 37 i32.const 2 call $~lib/builtins/abort @@ -14457,7 +16645,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 38 i32.const 2 call $~lib/builtins/abort @@ -14472,7 +16660,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 39 i32.const 2 call $~lib/builtins/abort @@ -14488,7 +16676,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 40 i32.const 2 call $~lib/builtins/abort @@ -14501,20 +16689,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 41 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 168 + i32.const 416 call $~lib/array/Array.isArray<~lib/string/String> i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 42 i32.const 2 call $~lib/builtins/abort @@ -14529,7 +16717,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 192 + i32.const 440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -14545,7 +16733,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 216 + i32.const 464 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -14554,7 +16742,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 50 i32.const 2 call $~lib/builtins/abort @@ -14570,7 +16758,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 344 + i32.const 536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -14579,7 +16767,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 53 i32.const 2 call $~lib/builtins/abort @@ -14595,7 +16783,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 368 + i32.const 560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 @@ -14604,7 +16792,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 56 i32.const 2 call $~lib/builtins/abort @@ -14620,7 +16808,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 392 + i32.const 584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $6 @@ -14629,7 +16817,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 59 i32.const 2 call $~lib/builtins/abort @@ -14645,7 +16833,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 416 + i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $7 @@ -14654,7 +16842,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 62 i32.const 2 call $~lib/builtins/abort @@ -14679,7 +16867,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 440 + i32.const 632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $6 @@ -14695,7 +16883,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 480 + i32.const 672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -14704,7 +16892,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 69 i32.const 2 call $~lib/builtins/abort @@ -14720,7 +16908,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 520 + i32.const 712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -14729,7 +16917,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 72 i32.const 2 call $~lib/builtins/abort @@ -14745,7 +16933,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 560 + i32.const 752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -14754,7 +16942,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 75 i32.const 2 call $~lib/builtins/abort @@ -14770,7 +16958,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 600 + i32.const 792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -14779,7 +16967,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 78 i32.const 2 call $~lib/builtins/abort @@ -14795,7 +16983,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 640 + i32.const 832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 @@ -14804,7 +16992,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 81 i32.const 2 call $~lib/builtins/abort @@ -14833,7 +17021,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 87 i32.const 2 call $~lib/builtins/abort @@ -14846,7 +17034,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 88 i32.const 2 call $~lib/builtins/abort @@ -14864,7 +17052,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 92 i32.const 2 call $~lib/builtins/abort @@ -14877,7 +17065,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 93 i32.const 2 call $~lib/builtins/abort @@ -14890,7 +17078,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 94 i32.const 2 call $~lib/builtins/abort @@ -14905,7 +17093,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 98 i32.const 2 call $~lib/builtins/abort @@ -14918,7 +17106,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 99 i32.const 2 call $~lib/builtins/abort @@ -14931,7 +17119,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 100 i32.const 2 call $~lib/builtins/abort @@ -14948,7 +17136,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 104 i32.const 2 call $~lib/builtins/abort @@ -14961,7 +17149,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 105 i32.const 2 call $~lib/builtins/abort @@ -14975,7 +17163,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 106 i32.const 2 call $~lib/builtins/abort @@ -14992,7 +17180,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 110 i32.const 2 call $~lib/builtins/abort @@ -15005,7 +17193,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 111 i32.const 2 call $~lib/builtins/abort @@ -15019,7 +17207,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 112 i32.const 2 call $~lib/builtins/abort @@ -15033,7 +17221,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 113 i32.const 2 call $~lib/builtins/abort @@ -15050,7 +17238,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 117 i32.const 2 call $~lib/builtins/abort @@ -15063,7 +17251,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 118 i32.const 2 call $~lib/builtins/abort @@ -15077,7 +17265,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 119 i32.const 2 call $~lib/builtins/abort @@ -15091,7 +17279,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 120 i32.const 2 call $~lib/builtins/abort @@ -15105,7 +17293,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 121 i32.const 2 call $~lib/builtins/abort @@ -15128,7 +17316,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 130 i32.const 2 call $~lib/builtins/abort @@ -15141,7 +17329,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 131 i32.const 2 call $~lib/builtins/abort @@ -15154,7 +17342,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 132 i32.const 2 call $~lib/builtins/abort @@ -15164,7 +17352,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 728 + i32.const 920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -15177,7 +17365,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 135 i32.const 2 call $~lib/builtins/abort @@ -15191,7 +17379,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 137 i32.const 2 call $~lib/builtins/abort @@ -15205,7 +17393,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 138 i32.const 2 call $~lib/builtins/abort @@ -15219,7 +17407,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 139 i32.const 2 call $~lib/builtins/abort @@ -15233,13 +17421,11 @@ i32.const 47 call $~lib/array/Array#push drop - block (result i32) - local.get $0 - call $~lib/rt/pure/__release - global.get $std/array/arr - local.get $2 - call $~lib/array/Array#concat - end + local.get $0 + global.get $std/array/arr + local.get $2 + call $~lib/array/Array#concat + call $~lib/rt/pure/__skippedRelease local.set $0 global.get $std/array/arr call $std/array/internalCapacity @@ -15248,7 +17434,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 146 i32.const 2 call $~lib/builtins/abort @@ -15261,7 +17447,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 147 i32.const 2 call $~lib/builtins/abort @@ -15274,7 +17460,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 148 i32.const 2 call $~lib/builtins/abort @@ -15288,7 +17474,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 149 i32.const 2 call $~lib/builtins/abort @@ -15302,7 +17488,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 150 i32.const 2 call $~lib/builtins/abort @@ -15316,7 +17502,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 151 i32.const 2 call $~lib/builtins/abort @@ -15330,7 +17516,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 152 i32.const 2 call $~lib/builtins/abort @@ -15344,7 +17530,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 153 i32.const 2 call $~lib/builtins/abort @@ -15360,19 +17546,17 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 156 i32.const 2 call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#concat - end + local.get $0 + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#concat + call $~lib/rt/pure/__skippedRelease local.set $0 local.get $0 call $~lib/array/Array#get:length @@ -15381,7 +17565,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 159 i32.const 2 call $~lib/builtins/abort @@ -15395,7 +17579,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 160 i32.const 2 call $~lib/builtins/abort @@ -15404,7 +17588,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 744 + i32.const 936 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -15417,19 +17601,17 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 163 i32.const 2 call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - global.get $std/array/arr - call $~lib/array/Array#concat - end + local.get $0 + local.get $1 + global.get $std/array/arr + call $~lib/array/Array#concat + call $~lib/rt/pure/__skippedRelease local.set $0 local.get $0 call $~lib/array/Array#get:length @@ -15438,7 +17620,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 165 i32.const 2 call $~lib/builtins/abort @@ -15451,7 +17633,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 166 i32.const 2 call $~lib/builtins/abort @@ -15471,14 +17653,14 @@ block i32.const 0 local.set $1 + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 760 + i32.const 952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15490,7 +17672,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 800 + i32.const 992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 @@ -15499,20 +17681,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 174 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 840 + i32.const 1032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $7 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15524,7 +17706,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 880 + i32.const 1072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 @@ -15533,20 +17715,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 176 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 920 + i32.const 1112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $8 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15558,7 +17740,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 960 + i32.const 1152 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $10 @@ -15567,20 +17749,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 178 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1000 + i32.const 1192 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $11 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15592,7 +17774,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1040 + i32.const 1232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 @@ -15601,20 +17783,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 180 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1080 + i32.const 1272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $14 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15626,7 +17808,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1120 + i32.const 1312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $16 @@ -15635,20 +17817,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 182 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1160 + i32.const 1352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $17 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15660,7 +17842,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1200 + i32.const 1392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $19 @@ -15669,20 +17851,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 184 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1240 + i32.const 1432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $20 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15694,7 +17876,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1280 + i32.const 1472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $22 @@ -15703,20 +17885,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 186 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1320 + i32.const 1512 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $23 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15728,7 +17910,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1360 + i32.const 1552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 @@ -15737,20 +17919,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 188 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1400 + i32.const 1592 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $26 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15762,7 +17944,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1440 + i32.const 1632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $28 @@ -15771,20 +17953,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 190 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1480 + i32.const 1672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $29 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15796,7 +17978,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1520 + i32.const 1712 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $31 @@ -15805,20 +17987,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1560 + i32.const 1752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $32 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15830,7 +18012,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1600 + i32.const 1792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $34 @@ -15839,20 +18021,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 194 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 - i32.const 1640 + i32.const 1832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $35 - local.get $1 call $~lib/rt/pure/__retainRelease local.set $1 local.get $1 @@ -15864,7 +18046,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1680 + i32.const 1872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $37 @@ -15873,7 +18055,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 196 i32.const 2 call $~lib/builtins/abort @@ -15966,7 +18148,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 204 i32.const 2 call $~lib/builtins/abort @@ -15979,7 +18161,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 205 i32.const 2 call $~lib/builtins/abort @@ -15993,7 +18175,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 206 i32.const 2 call $~lib/builtins/abort @@ -16007,7 +18189,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 207 i32.const 2 call $~lib/builtins/abort @@ -16021,7 +18203,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 208 i32.const 2 call $~lib/builtins/abort @@ -16035,7 +18217,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 209 i32.const 2 call $~lib/builtins/abort @@ -16052,7 +18234,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 213 i32.const 2 call $~lib/builtins/abort @@ -16065,7 +18247,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 214 i32.const 2 call $~lib/builtins/abort @@ -16079,7 +18261,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 215 i32.const 2 call $~lib/builtins/abort @@ -16093,7 +18275,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 216 i32.const 2 call $~lib/builtins/abort @@ -16107,7 +18289,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 217 i32.const 2 call $~lib/builtins/abort @@ -16121,7 +18303,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 218 i32.const 2 call $~lib/builtins/abort @@ -16135,7 +18317,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 219 i32.const 2 call $~lib/builtins/abort @@ -16152,7 +18334,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 228 i32.const 2 call $~lib/builtins/abort @@ -16165,7 +18347,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 229 i32.const 2 call $~lib/builtins/abort @@ -16178,7 +18360,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 230 i32.const 2 call $~lib/builtins/abort @@ -16192,7 +18374,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 231 i32.const 2 call $~lib/builtins/abort @@ -16206,7 +18388,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 232 i32.const 2 call $~lib/builtins/abort @@ -16220,7 +18402,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 233 i32.const 2 call $~lib/builtins/abort @@ -16234,7 +18416,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 234 i32.const 2 call $~lib/builtins/abort @@ -16249,7 +18431,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 238 i32.const 2 call $~lib/builtins/abort @@ -16262,7 +18444,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 239 i32.const 2 call $~lib/builtins/abort @@ -16275,7 +18457,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 240 i32.const 2 call $~lib/builtins/abort @@ -16289,7 +18471,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 241 i32.const 2 call $~lib/builtins/abort @@ -16303,7 +18485,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 242 i32.const 2 call $~lib/builtins/abort @@ -16317,7 +18499,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 243 i32.const 2 call $~lib/builtins/abort @@ -16335,7 +18517,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 251 i32.const 2 call $~lib/builtins/abort @@ -16348,7 +18530,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 252 i32.const 2 call $~lib/builtins/abort @@ -16362,7 +18544,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 253 i32.const 2 call $~lib/builtins/abort @@ -16376,7 +18558,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 254 i32.const 2 call $~lib/builtins/abort @@ -16390,7 +18572,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 255 i32.const 2 call $~lib/builtins/abort @@ -16417,7 +18599,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 265 i32.const 2 call $~lib/builtins/abort @@ -16434,7 +18616,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 268 i32.const 2 call $~lib/builtins/abort @@ -16451,7 +18633,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 271 i32.const 2 call $~lib/builtins/abort @@ -16468,7 +18650,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 274 i32.const 2 call $~lib/builtins/abort @@ -16485,7 +18667,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 277 i32.const 2 call $~lib/builtins/abort @@ -16502,7 +18684,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 280 i32.const 2 call $~lib/builtins/abort @@ -16519,7 +18701,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 283 i32.const 2 call $~lib/builtins/abort @@ -16536,7 +18718,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 286 i32.const 2 call $~lib/builtins/abort @@ -16553,7 +18735,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 289 i32.const 2 call $~lib/builtins/abort @@ -16570,7 +18752,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 292 i32.const 2 call $~lib/builtins/abort @@ -16589,7 +18771,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 299 i32.const 2 call $~lib/builtins/abort @@ -16606,7 +18788,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 302 i32.const 2 call $~lib/builtins/abort @@ -16623,7 +18805,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 305 i32.const 2 call $~lib/builtins/abort @@ -16640,7 +18822,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 308 i32.const 2 call $~lib/builtins/abort @@ -16657,7 +18839,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 311 i32.const 2 call $~lib/builtins/abort @@ -16674,7 +18856,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 314 i32.const 2 call $~lib/builtins/abort @@ -16691,7 +18873,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 317 i32.const 2 call $~lib/builtins/abort @@ -16708,7 +18890,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 320 i32.const 2 call $~lib/builtins/abort @@ -16725,7 +18907,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 323 i32.const 2 call $~lib/builtins/abort @@ -16742,7 +18924,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 326 i32.const 2 call $~lib/builtins/abort @@ -16760,7 +18942,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 330 i32.const 2 call $~lib/builtins/abort @@ -16773,7 +18955,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 331 i32.const 2 call $~lib/builtins/abort @@ -16787,7 +18969,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 332 i32.const 2 call $~lib/builtins/abort @@ -16801,7 +18983,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 333 i32.const 2 call $~lib/builtins/abort @@ -16812,7 +18994,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1720 + i32.const 1912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $33 @@ -16826,7 +19008,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 1760 + i32.const 1952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $30 @@ -16835,7 +19017,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 340 i32.const 2 call $~lib/builtins/abort @@ -16845,7 +19027,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 1800 + i32.const 1992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $32 @@ -16854,20 +19036,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 341 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 - i32.const 1816 + i32.const 2008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $31 - local.get $37 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 @@ -16878,7 +19060,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 1856 + i32.const 2048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $29 @@ -16887,7 +19069,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 344 i32.const 2 call $~lib/builtins/abort @@ -16897,7 +19079,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 1888 + i32.const 2080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $28 @@ -16906,20 +19088,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 345 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 - i32.const 1912 + i32.const 2104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $24 - local.get $37 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 @@ -16930,7 +19112,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 1952 + i32.const 2144 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $25 @@ -16939,7 +19121,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 348 i32.const 2 call $~lib/builtins/abort @@ -16949,7 +19131,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 1976 + i32.const 2168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $21 @@ -16958,20 +19140,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 - i32.const 2008 + i32.const 2200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $23 - local.get $37 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 @@ -16982,7 +19164,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2048 + i32.const 2240 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $18 @@ -16991,7 +19173,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 352 i32.const 2 call $~lib/builtins/abort @@ -17001,7 +19183,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2072 + i32.const 2264 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $20 @@ -17010,20 +19192,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 353 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 - i32.const 2104 + i32.const 2296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $19 - local.get $37 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 @@ -17034,7 +19216,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2144 + i32.const 2336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $17 @@ -17043,7 +19225,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 356 i32.const 2 call $~lib/builtins/abort @@ -17053,133 +19235,133 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 357 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2200 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - local.get $37 - call $~lib/rt/pure/__retainRelease - local.set $37 - local.get $37 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $15 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2240 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 360 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2264 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 361 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2296 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - local.get $37 - call $~lib/rt/pure/__retainRelease - local.set $37 - local.get $37 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $14 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2336 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 364 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 3 i32.const 2360 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 365 + i32.const 376 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 i32.const 2392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $12 + call $~lib/rt/pure/__retainRelease + local.set $37 local.get $37 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.tee $15 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 2432 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $13 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 2456 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2488 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $11 + call $~lib/rt/pure/__retainRelease + local.set $37 + local.get $37 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.tee $14 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2528 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 364 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 2552 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 @@ -17190,7 +19372,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 2432 + i32.const 2624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $7 @@ -17199,7 +19381,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 368 i32.const 2 call $~lib/builtins/abort @@ -17209,7 +19391,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 2456 + i32.const 2648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 @@ -17218,20 +19400,20 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 369 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 - i32.const 2488 + i32.const 2680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 - local.get $37 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 @@ -17242,7 +19424,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 2528 + i32.const 2720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -17251,112 +19433,8 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 372 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2544 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $36 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 373 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $38 - local.get $37 - call $~lib/rt/pure/__retainRelease - local.set $37 - local.get $37 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $3 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $40 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 i32.const 376 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 377 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $42 - local.get $37 - call $~lib/rt/pure/__retainRelease - local.set $37 - local.get $37 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.tee $39 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2720 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 380 + i32.const 372 i32.const 2 call $~lib/builtins/abort unreachable @@ -17368,47 +19446,47 @@ i32.const 2736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $36 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 381 + i32.const 376 + i32.const 373 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 i32.const 2776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 - local.get $37 + local.tee $38 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 - i32.const 7 - i32.const 0 + i32.const 1 + i32.const -2 call $~lib/array/Array#splice - local.tee $43 + local.tee $3 i32.const 0 i32.const 2 i32.const 3 i32.const 2816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $48 + local.tee $40 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 384 + i32.const 376 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -17420,47 +19498,47 @@ i32.const 2832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $49 + local.tee $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 385 + i32.const 376 + i32.const 377 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $37 i32.const 5 i32.const 2 i32.const 3 i32.const 2872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $50 - local.get $37 + local.tee $42 call $~lib/rt/pure/__retainRelease local.set $37 local.get $37 - i32.const 7 - i32.const 5 + i32.const 4 + i32.const 0 call $~lib/array/Array#splice - local.tee $47 + local.tee $39 i32.const 0 i32.const 2 i32.const 3 i32.const 2912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $52 + local.tee $44 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 - i32.const 388 + i32.const 376 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -17472,13 +19550,117 @@ i32.const 2928 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain + local.tee $45 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 381 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2968 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $46 + call $~lib/rt/pure/__retainRelease + local.set $37 + local.get $37 + i32.const 7 + i32.const 0 + call $~lib/array/Array#splice + local.tee $43 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 3008 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $48 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 384 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3024 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $49 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 385 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3064 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $50 + call $~lib/rt/pure/__retainRelease + local.set $37 + local.get $37 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.tee $47 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 3104 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $52 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 388 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3120 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $53 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 389 i32.const 2 call $~lib/builtins/abort @@ -17618,7 +19800,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 402 i32.const 2 call $~lib/builtins/abort @@ -17634,7 +19816,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 405 i32.const 2 call $~lib/builtins/abort @@ -17650,7 +19832,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 408 i32.const 2 call $~lib/builtins/abort @@ -17666,7 +19848,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 416 i32.const 2 call $~lib/builtins/abort @@ -17679,7 +19861,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 417 i32.const 2 call $~lib/builtins/abort @@ -17695,7 +19877,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 419 i32.const 2 call $~lib/builtins/abort @@ -17723,7 +19905,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 432 i32.const 2 call $~lib/builtins/abort @@ -17736,7 +19918,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 433 i32.const 2 call $~lib/builtins/abort @@ -17762,7 +19944,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 443 i32.const 2 call $~lib/builtins/abort @@ -17778,7 +19960,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 446 i32.const 2 call $~lib/builtins/abort @@ -17794,7 +19976,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 454 i32.const 2 call $~lib/builtins/abort @@ -17807,7 +19989,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 455 i32.const 2 call $~lib/builtins/abort @@ -17823,7 +20005,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 457 i32.const 2 call $~lib/builtins/abort @@ -17851,7 +20033,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 470 i32.const 2 call $~lib/builtins/abort @@ -17864,7 +20046,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 471 i32.const 2 call $~lib/builtins/abort @@ -17890,7 +20072,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 481 i32.const 2 call $~lib/builtins/abort @@ -17906,7 +20088,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 484 i32.const 2 call $~lib/builtins/abort @@ -17922,7 +20104,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 492 i32.const 2 call $~lib/builtins/abort @@ -17935,7 +20117,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 493 i32.const 2 call $~lib/builtins/abort @@ -17951,7 +20133,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 495 i32.const 2 call $~lib/builtins/abort @@ -17979,7 +20161,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 508 i32.const 2 call $~lib/builtins/abort @@ -17992,7 +20174,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 509 i32.const 2 call $~lib/builtins/abort @@ -18019,7 +20201,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 520 i32.const 2 call $~lib/builtins/abort @@ -18036,7 +20218,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 529 i32.const 2 call $~lib/builtins/abort @@ -18049,7 +20231,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -18066,7 +20248,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 533 i32.const 2 call $~lib/builtins/abort @@ -18095,7 +20277,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 547 i32.const 2 call $~lib/builtins/abort @@ -18108,7 +20290,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 548 i32.const 2 call $~lib/builtins/abort @@ -18132,7 +20314,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 573 i32.const 2 call $~lib/builtins/abort @@ -18188,7 +20370,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 587 i32.const 2 call $~lib/builtins/abort @@ -18205,7 +20387,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 588 i32.const 2 call $~lib/builtins/abort @@ -18223,7 +20405,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 597 i32.const 2 call $~lib/builtins/abort @@ -18236,7 +20418,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 598 i32.const 2 call $~lib/builtins/abort @@ -18254,7 +20436,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 605 i32.const 2 call $~lib/builtins/abort @@ -18284,7 +20466,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 620 i32.const 2 call $~lib/builtins/abort @@ -18297,7 +20479,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 621 i32.const 2 call $~lib/builtins/abort @@ -18326,7 +20508,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 631 i32.const 2 call $~lib/builtins/abort @@ -18344,7 +20526,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 640 i32.const 2 call $~lib/builtins/abort @@ -18357,7 +20539,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 641 i32.const 2 call $~lib/builtins/abort @@ -18375,7 +20557,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 648 i32.const 2 call $~lib/builtins/abort @@ -18405,7 +20587,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 663 i32.const 2 call $~lib/builtins/abort @@ -18418,7 +20600,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 664 i32.const 2 call $~lib/builtins/abort @@ -18447,7 +20629,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 674 i32.const 2 call $~lib/builtins/abort @@ -18464,7 +20646,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 678 i32.const 2 call $~lib/builtins/abort @@ -18483,7 +20665,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 681 i32.const 2 call $~lib/builtins/abort @@ -18502,7 +20684,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 684 i32.const 2 call $~lib/builtins/abort @@ -18519,7 +20701,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 692 i32.const 2 call $~lib/builtins/abort @@ -18532,7 +20714,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 693 i32.const 2 call $~lib/builtins/abort @@ -18549,7 +20731,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 695 i32.const 2 call $~lib/builtins/abort @@ -18578,7 +20760,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 708 i32.const 2 call $~lib/builtins/abort @@ -18591,7 +20773,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 709 i32.const 2 call $~lib/builtins/abort @@ -18618,7 +20800,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 719 i32.const 2 call $~lib/builtins/abort @@ -18635,7 +20817,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 723 i32.const 2 call $~lib/builtins/abort @@ -18654,7 +20836,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 726 i32.const 2 call $~lib/builtins/abort @@ -18673,7 +20855,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 729 i32.const 2 call $~lib/builtins/abort @@ -18690,7 +20872,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 737 i32.const 2 call $~lib/builtins/abort @@ -18703,7 +20885,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 738 i32.const 2 call $~lib/builtins/abort @@ -18720,7 +20902,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 740 i32.const 2 call $~lib/builtins/abort @@ -18749,7 +20931,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 753 i32.const 2 call $~lib/builtins/abort @@ -18762,7 +20944,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 754 i32.const 2 call $~lib/builtins/abort @@ -18792,7 +20974,7 @@ i32.const 8 i32.const 2 i32.const 8 - i32.const 3200 + i32.const 3392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $52 @@ -18808,7 +20990,7 @@ i32.const 8 i32.const 2 i32.const 8 - i32.const 3248 + i32.const 3440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $50 @@ -18817,7 +20999,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 843 i32.const 2 call $~lib/builtins/abort @@ -18826,7 +21008,7 @@ i32.const 8 i32.const 3 i32.const 9 - i32.const 3296 + i32.const 3488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $49 @@ -18842,7 +21024,7 @@ i32.const 8 i32.const 3 i32.const 9 - i32.const 3376 + i32.const 3568 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $43 @@ -18851,7 +21033,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 847 i32.const 2 call $~lib/builtins/abort @@ -18860,7 +21042,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3456 + i32.const 3648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $46 @@ -18876,7 +21058,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 3496 + i32.const 3688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $44 @@ -18885,7 +21067,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 851 i32.const 2 call $~lib/builtins/abort @@ -18894,7 +21076,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 3536 + i32.const 3728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $39 @@ -18910,7 +21092,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 3576 + i32.const 3768 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $41 @@ -18919,7 +21101,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 855 i32.const 2 call $~lib/builtins/abort @@ -18928,7 +21110,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 3616 + i32.const 3808 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $40 @@ -18937,7 +21119,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3632 + i32.const 3824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $38 @@ -18946,7 +21128,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 3656 + i32.const 3848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -18955,7 +21137,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3680 + i32.const 3872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 @@ -18964,7 +21146,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 3712 + i32.const 3904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $7 @@ -18993,7 +21175,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 3800 + i32.const 3992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $9 @@ -19002,7 +21184,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 875 i32.const 2 call $~lib/builtins/abort @@ -19014,7 +21196,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 3824 + i32.const 4016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 @@ -19023,7 +21205,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 878 i32.const 2 call $~lib/builtins/abort @@ -19038,7 +21220,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 881 i32.const 2 call $~lib/builtins/abort @@ -19053,7 +21235,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 884 i32.const 2 call $~lib/builtins/abort @@ -19068,7 +21250,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 887 i32.const 2 call $~lib/builtins/abort @@ -19083,7 +21265,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 890 i32.const 2 call $~lib/builtins/abort @@ -19098,7 +21280,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 893 i32.const 2 call $~lib/builtins/abort @@ -19213,7 +21395,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 4072 + i32.const 4264 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $13 @@ -19222,7 +21404,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 4120 + i32.const 4312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $6 @@ -19240,7 +21422,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 930 i32.const 2 call $~lib/builtins/abort @@ -19269,19 +21451,19 @@ i32.const 2 i32.const 0 i32.const 15 - i32.const 4240 + i32.const 4432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $14 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join local.tee $8 - i32.const 4344 + i32.const 4536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 941 i32.const 2 call $~lib/builtins/abort @@ -19290,19 +21472,19 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 4384 + i32.const 4576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $9 - i32.const 4056 + i32.const 4248 call $~lib/array/Array#join local.tee $6 - i32.const 4888 + i32.const 5080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 942 i32.const 2 call $~lib/builtins/abort @@ -19311,19 +21493,19 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 4920 + i32.const 5112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $5 - i32.const 4952 + i32.const 5144 call $~lib/array/Array#join local.tee $13 - i32.const 4888 + i32.const 5080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 943 i32.const 2 call $~lib/builtins/abort @@ -19332,19 +21514,19 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 4976 + i32.const 5168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 - i32.const 5000 + i32.const 5192 call $~lib/array/Array#join local.tee $10 - i32.const 5024 + i32.const 5216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 944 i32.const 2 call $~lib/builtins/abort @@ -19353,19 +21535,19 @@ i32.const 6 i32.const 3 i32.const 9 - i32.const 5088 + i32.const 5280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 - i32.const 5152 + i32.const 5344 call $~lib/array/Array#join local.tee $7 - i32.const 6352 + i32.const 6544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 945 i32.const 2 call $~lib/builtins/abort @@ -19374,19 +21556,19 @@ i32.const 3 i32.const 2 i32.const 14 - i32.const 6472 + i32.const 6664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $36 - i32.const 4056 + i32.const 4248 call $~lib/array/Array<~lib/string/String>#join local.tee $4 - i32.const 6448 + i32.const 6640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 946 i32.const 2 call $~lib/builtins/abort @@ -19423,15 +21605,15 @@ call $~lib/rt/pure/__retain local.set $3 local.get $3 - i32.const 4320 + i32.const 4512 call $~lib/array/Array#join local.tee $1 - i32.const 6552 + i32.const 6744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 948 i32.const 2 call $~lib/builtins/abort @@ -19474,7 +21656,7 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 6632 + i32.const 6824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $3 @@ -19483,7 +21665,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 6648 + i32.const 6840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $38 @@ -19492,7 +21674,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 6672 + i32.const 6864 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $36 @@ -19501,7 +21683,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 6696 + i32.const 6888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -19510,12 +21692,12 @@ local.get $1 call $~lib/array/Array#toString local.tee $10 - i32.const 4056 + i32.const 4248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 958 i32.const 2 call $~lib/builtins/abort @@ -19524,12 +21706,12 @@ local.get $42 call $~lib/array/Array#toString local.tee $2 - i32.const 6448 + i32.const 6640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 959 i32.const 2 call $~lib/builtins/abort @@ -19538,12 +21720,12 @@ local.get $4 call $~lib/array/Array#toString local.tee $13 - i32.const 6728 + i32.const 6920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 960 i32.const 2 call $~lib/builtins/abort @@ -19552,12 +21734,12 @@ local.get $7 call $~lib/array/Array#toString local.tee $5 - i32.const 6752 + i32.const 6944 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 961 i32.const 2 call $~lib/builtins/abort @@ -19566,18 +21748,18 @@ i32.const 3 i32.const 0 i32.const 20 - i32.const 6784 + i32.const 6976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $9 call $~lib/array/Array#toString local.tee $6 - i32.const 6808 + i32.const 7000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 963 i32.const 2 call $~lib/builtins/abort @@ -19586,18 +21768,18 @@ i32.const 3 i32.const 1 i32.const 21 - i32.const 6840 + i32.const 7032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $14 call $~lib/array/Array#toString local.tee $8 - i32.const 6864 + i32.const 7056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 964 i32.const 2 call $~lib/builtins/abort @@ -19606,18 +21788,18 @@ i32.const 3 i32.const 3 i32.const 16 - i32.const 6904 + i32.const 7096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $41 call $~lib/array/Array#toString local.tee $40 - i32.const 6944 + i32.const 7136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 965 i32.const 2 call $~lib/builtins/abort @@ -19626,18 +21808,18 @@ i32.const 4 i32.const 3 i32.const 22 - i32.const 7008 + i32.const 7200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $39 call $~lib/array/Array#toString local.tee $45 - i32.const 7056 + i32.const 7248 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 966 i32.const 2 call $~lib/builtins/abort @@ -19646,7 +21828,7 @@ i32.const 7 i32.const 2 i32.const 13 - i32.const 7160 + i32.const 7352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $48 @@ -19655,12 +21837,12 @@ local.get $44 call $~lib/array/Array<~lib/string/String | null>#toString local.tee $46 - i32.const 7208 + i32.const 7400 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 970 i32.const 2 call $~lib/builtins/abort @@ -19669,18 +21851,18 @@ i32.const 4 i32.const 2 i32.const 14 - i32.const 7304 + i32.const 7496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $47 call $~lib/array/Array<~lib/string/String>#toString local.tee $43 - i32.const 7336 + i32.const 7528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 971 i32.const 2 call $~lib/builtins/abort @@ -19700,7 +21882,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7368 + i32.const 7560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $52 @@ -19710,7 +21892,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 7392 + i32.const 7584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $11 @@ -19723,12 +21905,12 @@ local.get $54 call $~lib/array/Array<~lib/array/Array>#toString local.tee $50 - i32.const 7416 + i32.const 7608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 974 i32.const 2 call $~lib/builtins/abort @@ -19748,7 +21930,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7448 + i32.const 7640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $12 @@ -19758,7 +21940,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 7472 + i32.const 7664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $16 @@ -19771,12 +21953,12 @@ local.get $55 call $~lib/array/Array<~lib/array/Array>#toString local.tee $53 - i32.const 7416 + i32.const 7608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 977 i32.const 2 call $~lib/builtins/abort @@ -19807,7 +21989,7 @@ i32.const 1 i32.const 2 i32.const 7 - i32.const 7496 + i32.const 7688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $20 @@ -19824,12 +22006,12 @@ local.get $56 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString local.tee $15 - i32.const 6448 + i32.const 6640 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 + i32.const 376 i32.const 980 i32.const 2 call $~lib/builtins/abort @@ -19911,7 +22093,7 @@ local.get $56 call $~lib/rt/pure/__release ) - (func $std/array/main (; 277 ;) (type $FUNCSIG$v) + (func $std/array/main (; 306 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -19920,1532 +22102,25 @@ global.set $~lib/started end ) - (func $~lib/rt/pure/markGray (; 278 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/tlsf/removeBlock (; 279 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 280 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 - i32.load - local.set $6 - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $3 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end - ) - (func $~lib/rt/tlsf/freeBlock (; 281 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/rt/pure/scanBlack (; 282 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 283 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 284 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/__collect (; 285 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $2 - i32.load - local.set $4 - local.get $4 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $1 - local.get $4 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $5 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $5 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $5 - i32.load - call $~lib/rt/pure/scan - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - block $break|2 - local.get $0 - local.set $5 - loop $repeat|2 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $5 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/__instanceof (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=8 - local.set $2 - global.get $~lib/rt/RTTI_BASE - local.set $3 - local.get $2 - local.get $3 - i32.load - i32.le_u - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/rt/__typeinfo (; 287 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/RTTI_BASE - local.set $1 - local.get $0 - local.get $1 - i32.load - i32.gt_u - if - i32.const 240 - i32.const 7568 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $start (; 288 ;) (type $FUNCSIG$v) + (func $start (; 307 ;) (type $FUNCSIG$v) call $start:std/array ) - (func $~lib/rt/pure/increment (; 289 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 7608 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 7608 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/pure/growRoots (; 291 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 292 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 293 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - call $~lib/rt/pure/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 7608 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 7608 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 8 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/__retainRelease (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.ne - if - global.get $~lib/heap/HEAP_BASE - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (; 295 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/array/Array#__visit_impl (; 296 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 308 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 297 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 309 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 298 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 299 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 300 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 301 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array>#__visit_impl (; 302 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 303 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 304 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 305 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 306 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 308 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 309 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/rt/pure/__visit (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -21507,7 +22182,7 @@ i32.eqz if i32.const 0 - i32.const 7608 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -21554,7 +22229,7 @@ i32.eqz if i32.const 0 - i32.const 7608 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -21591,7 +22266,7 @@ i32.eqz if i32.const 0 - i32.const 7608 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -21599,7 +22274,313 @@ end end ) - (func $~lib/rt/__visit_members (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array>#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array#__visit_impl (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 319 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 320 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array#__visit_impl (; 322 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 324 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 327 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/rt/__visit_members (; 328 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block @@ -22001,979 +22982,6 @@ end unreachable ) - (func $~lib/rt/tlsf/prepareSize (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 7656 - i32.const 7520 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/prepareBlock (; 318 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/searchBlock (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/addMemory (; 320 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/growMemory (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/allocateBlock (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/reallocateBlock (; 323 ;) (type $FUNCSIG$iiii) (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 491 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (; 324 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 552 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 553 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/initializeRoot (; 325 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/__alloc (; 326 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/__free (; 327 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 560 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 7520 - i32.const 561 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $null (; 328 ;) (type $FUNCSIG$v) + (func $null (; 329 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 4373eeb8..c73844b9 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,57 +1,42 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00&") - (data (i32.const 24) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 64) "\10\00\00\00(") - (data (i32.const 80) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 120) "\10\00\00\00$") - (data (i32.const 136) "s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 176) "\0f\00\00\00\08") - (data (i32.const 192) "\01\00\00\00\02") - (data (i32.const 200) "\10\00\00\00 ") - (data (i32.const 216) "~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data (i32.const 248) "\10\00\00\00\1e") - (data (i32.const 264) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 296) "\1d\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 168) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 192) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/arraybuffer/buffer (mut i32) (i32.const 0)) (global $std/arraybuffer/sliced (mut i32) (i32.const 0)) (global $std/arraybuffer/arr8 (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -59,20 +44,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -80,16 +65,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -98,301 +83,69 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 1 - i32.add - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 3 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $1 - i32.sub - local.set $2 - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $2 - i32.const -4 - i32.and - local.tee $1 - local.get $0 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 4 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 12 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 16 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 20 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - local.get $0 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i32.const 8 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 24 - i32.add - i64.const 0 - i64.store - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $continue|0 - end - end - end - ) - (func $~lib/util/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 536 - i32.le_u - if - i32.const 0 - i32.const 80 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 i32.const 16 i32.sub local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 - i32.store + i32.store offset=8 + local.get $2 local.get $0 + i32.store offset=12 + local.get $3 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - i32.const 0 - i32.const 24 - i32.const 54 - i32.const 43 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.store8 local.get $0 - call $~lib/util/runtime/allocate + i32.const 8 + i32.add local.tee $1 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 local.get $0 - call $~lib/memory/memory.fill + i32.const 1 + i32.add + i32.const 0 + i32.store8 + local.get $0 + i32.const 2 + i32.add + i32.const 0 + i32.store8 local.get $1 - i32.const 15 - call $~lib/util/runtime/register + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 3 + i32.add + i32.const 0 + i32.store8 + local.get $1 + i32.const 4 + i32.sub + i32.const 0 + i32.store8 ) - (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 local.get $0 local.get $1 i32.eq @@ -414,15 +167,15 @@ i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -431,7 +184,7 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 @@ -439,7 +192,7 @@ end end loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if @@ -447,10 +200,10 @@ local.get $1 i64.load i64.store - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 + local.set $3 local.get $0 i32.const 8 i32.add @@ -464,10 +217,10 @@ end end loop $continue|2 - local.get $2 + local.get $3 if local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -476,14 +229,14 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 br $continue|2 end end @@ -498,22 +251,22 @@ if loop $continue|3 local.get $0 - local.get $2 + local.get $3 i32.add i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -521,18 +274,18 @@ end end loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $2 + local.get $0 + local.get $3 i32.const 8 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i64.load i64.store @@ -541,16 +294,16 @@ end end loop $continue|5 - local.get $2 + local.get $3 if - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -560,12 +313,12 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 local.set $3 local.get $1 i32.const 0 @@ -619,7 +372,8 @@ i32.gt_s select local.tee $2 - call $~lib/util/runtime/allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.tee $3 local.get $0 local.get $1 @@ -627,10 +381,8 @@ local.get $2 call $~lib/memory/memory.copy local.get $3 - i32.const 15 - call $~lib/util/runtime/register ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) i32.const 1 i32.const 1073741808 @@ -638,10 +390,10 @@ i32.shr_u i32.gt_u if - i32.const 0 i32.const 24 - i32.const 12 - i32.const 57 + i32.const 72 + i32.const 14 + i32.const 56 call $~lib/builtins/abort unreachable end @@ -649,15 +401,15 @@ local.get $1 i32.shl local.tee $2 - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.const 0 + call $~lib/rt/stub/__alloc local.set $1 local.get $0 i32.eqz if i32.const 12 - call $~lib/util/runtime/allocate - i32.const 14 - call $~lib/util/runtime/register + i32.const 2 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -670,6 +422,9 @@ i32.const 0 i32.store offset=8 local.get $0 + i32.load + drop + local.get $0 local.get $1 i32.store local.get $0 @@ -680,18 +435,16 @@ i32.store offset=8 local.get $0 ) - (func $~lib/util/runtime/makeArray (; 9 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/rt/__allocArray (; 6 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 16 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc local.tee $0 i32.const 8 - call $~lib/util/runtime/allocate - i32.const 15 - call $~lib/util/runtime/register + i32.const 0 + call $~lib/rt/stub/__alloc local.tee $1 i32.store local.get $0 @@ -704,12 +457,12 @@ i32.const 2 i32.store offset=12 local.get $1 - i32.const 192 + i32.const 184 i32.const 8 call $~lib/memory/memory.copy local.get $0 ) - (func $~lib/dataview/DataView#constructor (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -718,21 +471,20 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.gt_u i32.or if - i32.const 0 - i32.const 216 + i32.const 24 + i32.const 208 i32.const 21 i32.const 6 call $~lib/builtins/abort unreachable end i32.const 12 - call $~lib/util/runtime/allocate - i32.const 29 - call $~lib/util/runtime/register + i32.const 15 + call $~lib/rt/stub/__alloc local.tee $2 i32.const 0 i32.store @@ -743,6 +495,9 @@ i32.const 0 i32.store offset=8 local.get $2 + i32.load + drop + local.get $2 local.get $0 i32.store local.get $2 @@ -753,7 +508,7 @@ i32.store offset=8 local.get $2 ) - (func $~lib/dataview/DataView#constructor|trampoline (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block $2of2 block $1of2 @@ -768,30 +523,35 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 local.set $1 end local.get $0 local.get $1 call $~lib/dataview/DataView#constructor ) - (func $start:std/arraybuffer (; 12 ;) (type $FUNCSIG$v) - i32.const 536 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + (func $start:std/arraybuffer (; 9 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 240 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 8 - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.const 0 + call $~lib/rt/stub/__alloc + local.tee $0 + call $~lib/memory/memory.fill + local.get $0 global.set $std/arraybuffer/buffer global.get $std/arraybuffer/buffer i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 8 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 3 i32.const 0 call $~lib/builtins/abort @@ -805,12 +565,12 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 8 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 7 i32.const 0 call $~lib/builtins/abort @@ -821,7 +581,7 @@ i32.eq if i32.const 0 - i32.const 136 + i32.const 128 i32.const 8 i32.const 0 call $~lib/builtins/abort @@ -835,12 +595,12 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 7 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 12 i32.const 0 call $~lib/builtins/abort @@ -854,12 +614,12 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 16 i32.const 0 call $~lib/builtins/abort @@ -873,12 +633,12 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 2 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 20 i32.const 0 call $~lib/builtins/abort @@ -892,12 +652,12 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 6 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 24 i32.const 0 call $~lib/builtins/abort @@ -911,12 +671,12 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 2 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 28 i32.const 0 call $~lib/builtins/abort @@ -930,12 +690,12 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 4 i32.ne if i32.const 0 - i32.const 136 + i32.const 128 i32.const 32 i32.const 0 call $~lib/builtins/abort @@ -949,10 +709,10 @@ global.get $std/arraybuffer/sliced i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 if i32.const 0 - i32.const 136 + i32.const 128 i32.const 36 i32.const 0 call $~lib/builtins/abort @@ -962,20 +722,19 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 37 i32.const 0 call $~lib/builtins/abort unreachable end i32.const 12 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor global.set $std/arraybuffer/arr8 - call $~lib/util/runtime/makeArray + call $~lib/rt/__allocArray drop global.get $std/arraybuffer/arr8 if (result i32) @@ -986,28 +745,27 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 47 i32.const 0 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array>11 (result i32) + block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array>2 (result i32) i32.const 1 i32.const 12 - call $~lib/util/runtime/allocate - i32.const 23 - call $~lib/util/runtime/register + i32.const 9 + call $~lib/rt/stub/__alloc i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - br_if $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array>11 + br_if $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array>2 drop i32.const 0 end i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 48 i32.const 0 call $~lib/builtins/abort @@ -1015,206 +773,29 @@ end i32.const 1 global.set $~lib/argc - block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView>12 (result i32) + block $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView>3 (result i32) i32.const 1 global.get $std/arraybuffer/arr8 i32.load call $~lib/dataview/DataView#constructor|trampoline - br_if $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView>12 + br_if $__inlined_func$~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView>3 drop i32.const 0 end i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 49 i32.const 0 call $~lib/builtins/abort unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 296 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 296 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 296 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 296 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 296 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 296 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and - if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 264 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 20 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 264 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 21 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:std/arraybuffer ) - (func $null (; 22 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 40fb69f7..29cb965f 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -1,100 +1,75 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 64) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 120) "\10\00\00\00$\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 176) "\0f\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 200) "\10\00\00\00 \00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (data (i32.const 248) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 296) "\1d\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 168) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 192) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/util/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/arraybuffer/buffer (mut i32) (i32.const 0)) (global $std/arraybuffer/sliced (mut i32) (i32.const 0)) (global $std/arraybuffer/arr8 (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 296)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 536)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 240)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -104,22 +79,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -128,440 +103,405 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 + i32.sub + local.set $8 + local.get $8 local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.store offset=8 + local.get $8 local.get $0 - call $~lib/allocator/arena/__mem_allocate - return + i32.store offset=12 + local.get $2 ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 local.get $2 + local.set $3 + local.get $3 i32.eqz if br $~lib/util/memory/memset|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 1 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 2 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 1 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 + local.get $5 i32.const 2 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 2 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 3 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 6 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 3 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end i32.const 0 - local.get $0 + local.get $5 i32.sub i32.const 3 i32.and - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -4 i32.and - local.set $2 + local.set $3 i32.const -1 i32.const 255 i32.div_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.mul - local.set $4 - local.get $0 - local.get $4 + local.set $7 + local.get $5 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 4 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 8 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 12 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 8 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 24 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 12 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 16 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 20 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 24 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 28 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 24 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 20 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 16 i32.sub - local.get $4 + local.get $7 i32.store i32.const 24 - local.get $0 + local.get $5 i32.const 4 i32.and i32.add - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $4 + local.set $3 + local.get $7 i64.extend_i32_u - local.get $4 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $6 + local.set $8 block $break|0 loop $continue|0 - local.get $2 + local.get $3 i32.const 32 i32.ge_u if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 br $continue|0 end end end end ) - (func $~lib/util/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store + (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 i32.gt_u if - i32.const 0 i32.const 24 - i32.const 54 - i32.const 43 + i32.const 72 + i32.const 56 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/util/runtime/allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.set $2 local.get $2 i32.const 0 local.get $1 call $~lib/memory/memory.fill local.get $2 - i32.const 15 - call $~lib/util/runtime/register + call $~lib/rt/stub/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 ) - (func $~lib/memory/memory.copy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 br $continue|0 end end end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 br $continue|1 end end @@ -569,95 +509,89 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if - block - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $5 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $5 + local.get $6 end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store br $continue|4 end end @@ -665,16 +599,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -685,7 +619,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -756,7 +690,8 @@ select local.set $6 local.get $6 - call $~lib/util/runtime/allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.set $7 local.get $7 local.get $0 @@ -765,10 +700,185 @@ local.get $6 call $~lib/memory/memory.copy local.get $7 - i32.const 15 - call $~lib/util/runtime/register + call $~lib/rt/stub/__retain ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__skippedRelease (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $~lib/rt/stub/__release (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + if + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 0 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + end + i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBuffer.isView (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if block (result i32) @@ -882,7 +992,11 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 if block (result i32) @@ -892,6 +1006,23 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 1 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -901,6 +1032,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -910,6 +1045,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -919,6 +1058,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -928,6 +1071,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -937,6 +1084,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -946,6 +1097,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -955,6 +1110,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -964,6 +1123,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -973,6 +1136,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -982,21 +1149,24 @@ end if i32.const 1 - return - end - block (result i32) + local.set $1 local.get $0 - drop - i32.const 0 - end - if - i32.const 1 + call $~lib/rt/stub/__release + local.get $1 return end end i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 if block (result i32) @@ -1006,15 +1176,10 @@ end if i32.const 1 - return - end - block (result i32) + local.set $1 local.get $0 - drop - i32.const 1 - end - if - i32.const 1 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1024,6 +1189,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1033,6 +1202,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1042,6 +1215,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1051,6 +1228,23 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 1 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1060,6 +1254,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1069,6 +1267,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1078,6 +1280,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1087,6 +1293,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1096,6 +1306,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1105,12 +1319,24 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end end i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 if block (result i32) @@ -1120,6 +1346,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1129,6 +1359,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1138,6 +1372,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1147,6 +1385,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1156,15 +1398,10 @@ end if i32.const 1 - return - end - block (result i32) + local.set $1 local.get $0 - drop - i32.const 1 - end - if - i32.const 1 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1174,6 +1411,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1183,6 +1424,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1192,6 +1437,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1201,6 +1450,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1210,6 +1463,10 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end block (result i32) @@ -1219,155 +1476,66 @@ end if i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + return + end + block (result i32) + local.get $0 + drop + i32.const 1 + end + if + i32.const 1 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end end i32.const 0 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 0 - end - if - i32.const 1 - return - end - block (result i32) - local.get $0 - drop - i32.const 1 - end - if - i32.const 1 - return - end - end - i32.const 0 + (func $~lib/rt/stub/__retainRelease (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 ) (func $~lib/arraybuffer/ArrayBufferView#constructor (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 local.get $2 i32.shr_u i32.gt_u if - i32.const 0 i32.const 24 - i32.const 12 - i32.const 57 + i32.const 72 + i32.const 14 + i32.const 56 call $~lib/builtins/abort unreachable end - i32.const 0 local.get $1 local.get $2 i32.shl local.tee $1 - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.const 0 + call $~lib/rt/stub/__alloc local.set $3 block (result i32) local.get $0 i32.eqz if i32.const 12 - call $~lib/util/runtime/allocate - i32.const 14 - call $~lib/util/runtime/register + i32.const 2 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -1381,7 +1549,11 @@ i32.store offset=8 local.get $0 end + local.tee $4 + local.get $4 + i32.load local.get $3 + call $~lib/rt/stub/__retainRelease i32.store local.get $0 local.get $3 @@ -1392,41 +1564,42 @@ local.get $0 ) (func $~lib/typedarray/Uint8Array#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/util/runtime/makeArray (; 18 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 18 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 - call $~lib/util/runtime/allocate local.get $2 - call $~lib/util/runtime/register + call $~lib/rt/stub/__alloc local.set $4 local.get $0 local.get $1 i32.shl local.set $5 local.get $5 - call $~lib/util/runtime/allocate - i32.const 15 - call $~lib/util/runtime/register + i32.const 0 + call $~lib/rt/stub/__alloc local.set $6 local.get $4 local.get $6 + call $~lib/rt/stub/__retain i32.store local.get $4 local.get $6 @@ -1447,25 +1620,31 @@ local.get $4 ) (func $~lib/typedarray/Int32Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate - i32.const 23 - call $~lib/util/runtime/register + i32.const 9 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) (func $~lib/dataview/DataView#constructor (; 20 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $3 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 i32.gt_u local.get $2 local.get $3 @@ -1475,11 +1654,17 @@ i32.gt_u i32.or if - i32.const 0 - i32.const 216 - i32.const 21 - i32.const 6 - call $~lib/builtins/abort + local.get $1 + call $~lib/rt/stub/__release + block + i32.const 24 + i32.const 208 + i32.const 21 + i32.const 6 + call $~lib/builtins/abort + unreachable + unreachable + end unreachable end block (result i32) @@ -1487,9 +1672,9 @@ i32.eqz if i32.const 12 - call $~lib/util/runtime/allocate - i32.const 29 - call $~lib/util/runtime/register + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -1503,14 +1688,18 @@ i32.store offset=8 local.get $0 end + local.tee $4 + local.get $4 + i32.load local.get $1 + call $~lib/rt/stub/__retainRelease i32.store local.get $1 local.get $2 i32.add - local.set $4 + local.set $5 local.get $0 - local.get $4 + local.get $5 i32.store offset=4 local.get $0 local.get $3 @@ -1520,6 +1709,7 @@ (func $~lib/typedarray/Uint8Array#get:buffer (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load + call $~lib/rt/stub/__retain ) (func $~lib/dataview/DataView#constructor|trampoline (; 22 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) block $2of2 @@ -1547,16 +1737,20 @@ call $~lib/dataview/DataView#constructor ) (func $start:std/arraybuffer (; 23 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 i32.const 8 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1568,7 +1762,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 3 i32.const 0 call $~lib/builtins/abort @@ -1576,7 +1770,7 @@ end global.get $std/arraybuffer/buffer i32.const 0 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced @@ -1586,7 +1780,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 7 i32.const 0 call $~lib/builtins/abort @@ -1598,16 +1792,18 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 8 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/arraybuffer/sliced global.get $std/arraybuffer/buffer i32.const 1 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice + call $~lib/rt/stub/__skippedRelease global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -1616,16 +1812,18 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 12 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/arraybuffer/sliced global.get $std/arraybuffer/buffer i32.const -1 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice + call $~lib/rt/stub/__skippedRelease global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -1634,16 +1832,18 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 16 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/arraybuffer/sliced global.get $std/arraybuffer/buffer i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice + call $~lib/rt/stub/__skippedRelease global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -1652,16 +1852,18 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 20 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/arraybuffer/sliced global.get $std/arraybuffer/buffer i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice + call $~lib/rt/stub/__skippedRelease global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -1670,16 +1872,18 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 24 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/arraybuffer/sliced global.get $std/arraybuffer/buffer i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice + call $~lib/rt/stub/__skippedRelease global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -1688,16 +1892,18 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 28 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/arraybuffer/sliced global.get $std/arraybuffer/buffer i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice + call $~lib/rt/stub/__skippedRelease global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -1706,16 +1912,18 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 32 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/arraybuffer/sliced global.get $std/arraybuffer/buffer i32.const 42 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice + call $~lib/rt/stub/__skippedRelease global.set $std/arraybuffer/sliced global.get $std/arraybuffer/sliced call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -1724,7 +1932,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 36 i32.const 0 call $~lib/builtins/abort @@ -1736,7 +1944,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 37 i32.const 0 call $~lib/builtins/abort @@ -1748,7 +1956,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 39 i32.const 0 call $~lib/builtins/abort @@ -1760,7 +1968,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 40 i32.const 0 call $~lib/builtins/abort @@ -1772,7 +1980,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 41 i32.const 0 call $~lib/builtins/abort @@ -1784,7 +1992,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 42 i32.const 0 call $~lib/builtins/abort @@ -1796,7 +2004,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 43 i32.const 0 call $~lib/builtins/abort @@ -1808,15 +2016,17 @@ global.set $std/arraybuffer/arr8 i32.const 2 i32.const 2 - i32.const 17 - i32.const 192 - call $~lib/util/runtime/makeArray + i32.const 3 + i32.const 184 + call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain + local.tee $1 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> i32.eqz i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 46 i32.const 0 call $~lib/builtins/abort @@ -1827,7 +2037,7 @@ i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 47 i32.const 0 call $~lib/builtins/abort @@ -1836,11 +2046,12 @@ i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#constructor + local.tee $0 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 48 i32.const 0 call $~lib/builtins/abort @@ -1852,216 +2063,34 @@ i32.const 0 global.get $std/arraybuffer/arr8 call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#constructor|trampoline + local.tee $3 end call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> i32.eqz if i32.const 0 - i32.const 136 + i32.const 128 i32.const 49 i32.const 0 call $~lib/builtins/abort unreachable end - ) - (func $~lib/runtime/runtime.instanceof (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 + call $~lib/rt/stub/__release local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 264 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 + call $~lib/rt/stub/__release ) - (func $~lib/runtime/runtime.retain (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 32 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 264 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 34 ;) (type $FUNCSIG$v) + (func $start (; 24 ;) (type $FUNCSIG$v) call $start:std/arraybuffer ) - (func $null (; 35 ;) (type $FUNCSIG$v) + (func $null (; 25 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 65338200..cb275457 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -2,60 +2,47 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$jj (func (param i64) (result i64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$vifi (func (param i32 f32 i32))) (type $FUNCSIG$vidi (func (param i32 f64 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00&") - (data (i32.const 24) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 64) "\10\00\00\00(") - (data (i32.const 80) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 120) "\10\00\00\00$") - (data (i32.const 136) "~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 176) "\10\00\00\00 ") - (data (i32.const 192) "~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data (i32.const 224) "\10\00\00\00\1e") - (data (i32.const 240) "s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data (i32.const 272) "\10\00\00\00\1e") - (data (i32.const 288) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 320) "\13\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 224) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/dataview/array (mut i32) (i32.const 0)) (global $std/dataview/view (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -63,20 +50,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -84,16 +71,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -102,125 +89,31 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 8 - i32.add - local.tee $1 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 1 - i32.add - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.add - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 3 - i32.add - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - ) - (func $~lib/util/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 480 - i32.le_u - if - i32.const 0 - i32.const 80 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 i32.const 16 i32.sub local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 - i32.store + i32.store offset=8 + local.get $2 local.get $0 + i32.store offset=12 + local.get $3 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 8 - call $~lib/util/runtime/allocate - local.tee $1 - call $~lib/memory/memory.fill - local.get $1 - i32.const 15 - call $~lib/util/runtime/register + i32.const 0 + call $~lib/rt/stub/__alloc local.set $1 local.get $0 i32.eqz if i32.const 12 - call $~lib/util/runtime/allocate - i32.const 14 - call $~lib/util/runtime/register + i32.const 2 + call $~lib/rt/stub/__alloc local.set $0 end local.get $0 @@ -233,6 +126,9 @@ i32.const 0 i32.store offset=8 local.get $0 + i32.load + drop + local.get $0 local.get $1 i32.store local.get $0 @@ -243,15 +139,15 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#__set (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 136 - i32.const 116 + i32.const 128 + i32.const 184 + i32.const 115 i32.const 44 call $~lib/builtins/abort unreachable @@ -263,7 +159,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#constructor (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.const 1073741808 @@ -274,21 +170,20 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.gt_u i32.or if - i32.const 0 - i32.const 192 + i32.const 24 + i32.const 240 i32.const 21 i32.const 6 call $~lib/builtins/abort unreachable end i32.const 12 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc local.tee $3 i32.const 0 i32.store @@ -299,6 +194,9 @@ i32.const 0 i32.store offset=8 local.get $3 + i32.load + drop + local.get $3 local.get $0 i32.store local.get $3 @@ -311,7 +209,7 @@ i32.store offset=8 local.get $3 ) - (func $~lib/dataview/DataView#getFloat32 (; 8 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $~lib/dataview/DataView#getFloat32 (; 5 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $1 i32.const 0 i32.lt_s @@ -323,8 +221,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 44 i32.const 6 call $~lib/builtins/abort @@ -357,7 +255,7 @@ f32.reinterpret_i32 end ) - (func $~lib/polyfills/bswap (; 9 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 6 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 i64.const 8 i64.shr_u @@ -383,14 +281,14 @@ i64.const 32 i64.rotr ) - (func $~lib/dataview/DataView#getFloat64 (; 10 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/dataview/DataView#getFloat64 (; 7 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -409,14 +307,14 @@ f64.reinterpret_i64 end ) - (func $~lib/dataview/DataView#getInt8 (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getInt8 (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 69 i32.const 49 call $~lib/builtins/abort @@ -428,7 +326,7 @@ i32.add i32.load8_s ) - (func $~lib/dataview/DataView#getInt16 (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt16 (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -440,8 +338,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 77 i32.const 7 call $~lib/builtins/abort @@ -470,7 +368,7 @@ i32.or end ) - (func $~lib/dataview/DataView#getInt32 (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt32 (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -482,8 +380,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 86 i32.const 7 call $~lib/builtins/abort @@ -512,15 +410,15 @@ i32.or end ) - (func $~lib/dataview/DataView#getInt64 (; 14 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/dataview/DataView#getInt64 (; 11 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 180 i32.const 6 call $~lib/builtins/abort @@ -538,14 +436,14 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint8 (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getUint8 (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 92 i32.const 49 call $~lib/builtins/abort @@ -557,7 +455,7 @@ i32.add i32.load8_u ) - (func $~lib/dataview/DataView#getUint16 (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint16 (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -569,8 +467,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 100 i32.const 6 call $~lib/builtins/abort @@ -597,7 +495,7 @@ i32.or end ) - (func $~lib/dataview/DataView#getUint32 (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint32 (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -609,8 +507,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 109 i32.const 6 call $~lib/builtins/abort @@ -639,15 +537,15 @@ i32.or end ) - (func $~lib/dataview/DataView#getUint64 (; 18 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/dataview/DataView#getUint64 (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 189 i32.const 6 call $~lib/builtins/abort @@ -665,14 +563,14 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#setFloat32 (; 19 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/dataview/DataView#setFloat32 (; 16 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 118 i32.const 6 call $~lib/builtins/abort @@ -703,14 +601,14 @@ i32.store end ) - (func $~lib/dataview/DataView#setFloat64 (; 20 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/dataview/DataView#setFloat64 (; 17 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 127 i32.const 6 call $~lib/builtins/abort @@ -731,14 +629,14 @@ i64.store end ) - (func $~lib/dataview/DataView#setInt8 (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/dataview/DataView#setInt8 (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 133 i32.const 49 call $~lib/builtins/abort @@ -749,14 +647,14 @@ i32.const 108 i32.store8 ) - (func $~lib/dataview/DataView#setInt16 (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt16 (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 2 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 141 i32.const 6 call $~lib/builtins/abort @@ -785,14 +683,14 @@ local.get $1 i32.store16 ) - (func $~lib/dataview/DataView#setInt32 (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt32 (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 149 i32.const 6 call $~lib/builtins/abort @@ -821,14 +719,14 @@ local.get $1 i32.store ) - (func $~lib/dataview/DataView#setInt64 (; 24 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setInt64 (; 21 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 198 i32.const 6 call $~lib/builtins/abort @@ -845,14 +743,14 @@ end i64.store ) - (func $~lib/dataview/DataView#setUint8 (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/dataview/DataView#setUint8 (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 154 i32.const 49 call $~lib/builtins/abort @@ -863,14 +761,14 @@ i32.const 238 i32.store8 ) - (func $~lib/dataview/DataView#setUint16 (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint16 (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 2 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 162 i32.const 6 call $~lib/builtins/abort @@ -897,14 +795,14 @@ local.get $1 i32.store16 ) - (func $~lib/dataview/DataView#setUint32 (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint32 (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 170 i32.const 6 call $~lib/builtins/abort @@ -933,14 +831,14 @@ local.get $1 i32.store ) - (func $~lib/dataview/DataView#setUint64 (; 28 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setUint64 (; 25 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 206 i32.const 6 call $~lib/builtins/abort @@ -957,7 +855,7 @@ end i64.store ) - (func $~lib/dataview/DataView#constructor|trampoline (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block $2of2 block $1of2 @@ -972,7 +870,7 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 local.set $1 end local.get $0 @@ -980,16 +878,15 @@ local.get $1 call $~lib/dataview/DataView#constructor ) - (func $start:std/dataview (; 30 ;) (type $FUNCSIG$v) + (func $start:std/dataview (; 27 ;) (type $FUNCSIG$v) (local $0 i32) - i32.const 480 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 320 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 12 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc call $~lib/arraybuffer/ArrayBufferView#constructor global.set $std/dataview/array global.get $std/dataview/array @@ -1032,7 +929,7 @@ local.get $0 i32.load i32.sub - global.get $std/dataview/array + local.get $0 i32.load offset=8 call $~lib/dataview/DataView#constructor global.set $std/dataview/view @@ -1044,7 +941,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 14 i32.const 0 call $~lib/builtins/abort @@ -1058,7 +955,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 15 i32.const 0 call $~lib/builtins/abort @@ -1072,7 +969,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 16 i32.const 0 call $~lib/builtins/abort @@ -1086,7 +983,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 17 i32.const 0 call $~lib/builtins/abort @@ -1100,7 +997,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 18 i32.const 0 call $~lib/builtins/abort @@ -1114,7 +1011,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 20 i32.const 0 call $~lib/builtins/abort @@ -1128,7 +1025,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 21 i32.const 0 call $~lib/builtins/abort @@ -1142,7 +1039,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 22 i32.const 0 call $~lib/builtins/abort @@ -1156,7 +1053,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 23 i32.const 0 call $~lib/builtins/abort @@ -1170,7 +1067,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 24 i32.const 0 call $~lib/builtins/abort @@ -1183,7 +1080,7 @@ f64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 26 i32.const 0 call $~lib/builtins/abort @@ -1196,7 +1093,7 @@ f64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 27 i32.const 0 call $~lib/builtins/abort @@ -1209,7 +1106,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 29 i32.const 0 call $~lib/builtins/abort @@ -1222,7 +1119,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 30 i32.const 0 call $~lib/builtins/abort @@ -1235,7 +1132,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 31 i32.const 0 call $~lib/builtins/abort @@ -1248,7 +1145,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 32 i32.const 0 call $~lib/builtins/abort @@ -1261,7 +1158,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 33 i32.const 0 call $~lib/builtins/abort @@ -1274,7 +1171,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 34 i32.const 0 call $~lib/builtins/abort @@ -1287,7 +1184,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 35 i32.const 0 call $~lib/builtins/abort @@ -1300,7 +1197,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 36 i32.const 0 call $~lib/builtins/abort @@ -1316,7 +1213,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 38 i32.const 0 call $~lib/builtins/abort @@ -1332,7 +1229,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 39 i32.const 0 call $~lib/builtins/abort @@ -1348,7 +1245,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 40 i32.const 0 call $~lib/builtins/abort @@ -1364,7 +1261,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 41 i32.const 0 call $~lib/builtins/abort @@ -1380,7 +1277,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 42 i32.const 0 call $~lib/builtins/abort @@ -1396,7 +1293,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 43 i32.const 0 call $~lib/builtins/abort @@ -1412,7 +1309,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 44 i32.const 0 call $~lib/builtins/abort @@ -1428,7 +1325,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 46 i32.const 0 call $~lib/builtins/abort @@ -1444,7 +1341,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 47 i32.const 0 call $~lib/builtins/abort @@ -1460,7 +1357,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 48 i32.const 0 call $~lib/builtins/abort @@ -1476,7 +1373,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 49 i32.const 0 call $~lib/builtins/abort @@ -1492,7 +1389,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 50 i32.const 0 call $~lib/builtins/abort @@ -1508,7 +1405,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 51 i32.const 0 call $~lib/builtins/abort @@ -1524,7 +1421,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 52 i32.const 0 call $~lib/builtins/abort @@ -1538,7 +1435,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 54 i32.const 0 call $~lib/builtins/abort @@ -1552,7 +1449,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 55 i32.const 0 call $~lib/builtins/abort @@ -1566,7 +1463,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 56 i32.const 0 call $~lib/builtins/abort @@ -1580,7 +1477,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 57 i32.const 0 call $~lib/builtins/abort @@ -1594,7 +1491,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 58 i32.const 0 call $~lib/builtins/abort @@ -1608,7 +1505,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 60 i32.const 0 call $~lib/builtins/abort @@ -1622,7 +1519,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 61 i32.const 0 call $~lib/builtins/abort @@ -1636,7 +1533,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 62 i32.const 0 call $~lib/builtins/abort @@ -1650,7 +1547,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 63 i32.const 0 call $~lib/builtins/abort @@ -1664,7 +1561,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 64 i32.const 0 call $~lib/builtins/abort @@ -1677,7 +1574,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 66 i32.const 0 call $~lib/builtins/abort @@ -1690,7 +1587,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 67 i32.const 0 call $~lib/builtins/abort @@ -1703,7 +1600,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 69 i32.const 0 call $~lib/builtins/abort @@ -1716,7 +1613,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 70 i32.const 0 call $~lib/builtins/abort @@ -1729,7 +1626,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 71 i32.const 0 call $~lib/builtins/abort @@ -1742,7 +1639,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 72 i32.const 0 call $~lib/builtins/abort @@ -1755,7 +1652,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 73 i32.const 0 call $~lib/builtins/abort @@ -1768,7 +1665,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 74 i32.const 0 call $~lib/builtins/abort @@ -1781,7 +1678,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 75 i32.const 0 call $~lib/builtins/abort @@ -1794,7 +1691,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 76 i32.const 0 call $~lib/builtins/abort @@ -1810,7 +1707,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 78 i32.const 0 call $~lib/builtins/abort @@ -1826,7 +1723,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 79 i32.const 0 call $~lib/builtins/abort @@ -1842,7 +1739,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 80 i32.const 0 call $~lib/builtins/abort @@ -1858,7 +1755,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 81 i32.const 0 call $~lib/builtins/abort @@ -1874,7 +1771,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 82 i32.const 0 call $~lib/builtins/abort @@ -1890,7 +1787,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 83 i32.const 0 call $~lib/builtins/abort @@ -1906,7 +1803,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 84 i32.const 0 call $~lib/builtins/abort @@ -1922,7 +1819,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 86 i32.const 0 call $~lib/builtins/abort @@ -1938,7 +1835,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 87 i32.const 0 call $~lib/builtins/abort @@ -1954,7 +1851,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 88 i32.const 0 call $~lib/builtins/abort @@ -1970,7 +1867,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 89 i32.const 0 call $~lib/builtins/abort @@ -1986,7 +1883,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 90 i32.const 0 call $~lib/builtins/abort @@ -2002,7 +1899,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 91 i32.const 0 call $~lib/builtins/abort @@ -2018,7 +1915,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 92 i32.const 0 call $~lib/builtins/abort @@ -2032,7 +1929,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 94 i32.const 0 call $~lib/builtins/abort @@ -2046,7 +1943,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 95 i32.const 0 call $~lib/builtins/abort @@ -2060,7 +1957,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 96 i32.const 0 call $~lib/builtins/abort @@ -2074,7 +1971,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 97 i32.const 0 call $~lib/builtins/abort @@ -2088,7 +1985,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 98 i32.const 0 call $~lib/builtins/abort @@ -2102,7 +1999,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 100 i32.const 0 call $~lib/builtins/abort @@ -2116,7 +2013,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 101 i32.const 0 call $~lib/builtins/abort @@ -2130,7 +2027,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 102 i32.const 0 call $~lib/builtins/abort @@ -2144,7 +2041,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 103 i32.const 0 call $~lib/builtins/abort @@ -2158,7 +2055,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 104 i32.const 0 call $~lib/builtins/abort @@ -2171,7 +2068,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 106 i32.const 0 call $~lib/builtins/abort @@ -2184,7 +2081,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 107 i32.const 0 call $~lib/builtins/abort @@ -2202,7 +2099,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 110 i32.const 0 call $~lib/builtins/abort @@ -2220,7 +2117,7 @@ f32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 113 i32.const 0 call $~lib/builtins/abort @@ -2237,7 +2134,7 @@ f64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 116 i32.const 0 call $~lib/builtins/abort @@ -2254,7 +2151,7 @@ f64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 119 i32.const 0 call $~lib/builtins/abort @@ -2269,7 +2166,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 122 i32.const 0 call $~lib/builtins/abort @@ -2289,7 +2186,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 125 i32.const 0 call $~lib/builtins/abort @@ -2309,7 +2206,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 128 i32.const 0 call $~lib/builtins/abort @@ -2327,7 +2224,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 131 i32.const 0 call $~lib/builtins/abort @@ -2345,7 +2242,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 134 i32.const 0 call $~lib/builtins/abort @@ -2362,7 +2259,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 137 i32.const 0 call $~lib/builtins/abort @@ -2379,7 +2276,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 140 i32.const 0 call $~lib/builtins/abort @@ -2394,7 +2291,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 143 i32.const 0 call $~lib/builtins/abort @@ -2414,7 +2311,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 146 i32.const 0 call $~lib/builtins/abort @@ -2434,7 +2331,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 149 i32.const 0 call $~lib/builtins/abort @@ -2452,7 +2349,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 152 i32.const 0 call $~lib/builtins/abort @@ -2470,7 +2367,7 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 155 i32.const 0 call $~lib/builtins/abort @@ -2487,7 +2384,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 158 i32.const 0 call $~lib/builtins/abort @@ -2504,7 +2401,7 @@ i64.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 161 i32.const 0 call $~lib/builtins/abort @@ -2524,7 +2421,7 @@ i32.sub if i32.const 0 - i32.const 240 + i32.const 288 i32.const 164 i32.const 0 call $~lib/builtins/abort @@ -2536,194 +2433,17 @@ i32.ne if i32.const 0 - i32.const 240 + i32.const 288 i32.const 165 i32.const 0 call $~lib/builtins/abort unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 320 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 320 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 320 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 320 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 320 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 320 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and - if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 288 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 38 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 288 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 39 ;) (type $FUNCSIG$v) + (func $start (; 28 ;) (type $FUNCSIG$v) call $start:std/dataview ) - (func $null (; 40 ;) (type $FUNCSIG$v) + (func $null (; 29 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 55cad3ba..318d134e 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -5,6 +5,7 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$diii (func (param i32 i32 i32) (result f64))) (type $FUNCSIG$jj (func (param i64) (result i64))) @@ -13,94 +14,69 @@ (type $FUNCSIG$viidi (func (param i32 i32 f64 i32))) (type $FUNCSIG$viiji (func (param i32 i32 i64 i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 64) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 120) "\10\00\00\00$\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 176) "\10\00\00\00 \00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (data (i32.const 224) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (data (i32.const 272) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 320) "\13\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 224) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/util/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/dataview/array (mut i32) (i32.const 0)) (global $std/dataview/view (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 320)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 480)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 320)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -110,22 +86,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -134,378 +110,57 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 + i32.sub + local.set $8 + local.get $8 + local.get $1 + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__retainRelease (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $2 - i32.const -4 - i32.and - local.set $2 - i32.const -1 - i32.const 255 - i32.div_u - local.get $1 - i32.const 255 - i32.and - i32.mul - local.set $4 - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 12 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 28 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 24 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 20 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.get $4 - i32.store - i32.const 24 - local.get $0 - i32.const 4 - i32.and - i32.add - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $4 - i64.extend_i32_u - local.get $4 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end - br $continue|0 - end - end - end - end - ) - (func $~lib/util/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 - i32.store - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH - i32.gt_u - if - i32.const 0 - i32.const 24 - i32.const 54 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/util/runtime/allocate - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - i32.const 15 - call $~lib/util/runtime/register - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 local.get $2 i32.shr_u i32.gt_u if - i32.const 0 i32.const 24 - i32.const 12 - i32.const 57 + i32.const 72 + i32.const 14 + i32.const 56 call $~lib/builtins/abort unreachable end - i32.const 0 local.get $1 local.get $2 i32.shl local.tee $1 - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.const 0 + call $~lib/rt/stub/__alloc local.set $3 block (result i32) local.get $0 i32.eqz if i32.const 12 - call $~lib/util/runtime/allocate - i32.const 14 - call $~lib/util/runtime/register + i32.const 2 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -519,7 +174,11 @@ i32.store offset=8 local.get $0 end + local.tee $4 + local.get $4 + i32.load local.get $3 + call $~lib/rt/stub/__retainRelease i32.store local.get $0 local.get $3 @@ -529,31 +188,33 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8Array#__set (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 136 - i32.const 116 + i32.const 128 + i32.const 184 + i32.const 115 i32.const 44 call $~lib/builtins/abort unreachable @@ -565,16 +226,23 @@ local.get $2 i32.store8 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 ) - (func $~lib/dataview/DataView#constructor (; 12 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/stub/__release (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/dataview/DataView#constructor (; 9 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + (local $5 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $3 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 i32.gt_u local.get $2 local.get $3 @@ -584,11 +252,17 @@ i32.gt_u i32.or if - i32.const 0 - i32.const 192 - i32.const 21 - i32.const 6 - call $~lib/builtins/abort + local.get $1 + call $~lib/rt/stub/__release + block + i32.const 24 + i32.const 240 + i32.const 21 + i32.const 6 + call $~lib/builtins/abort + unreachable + unreachable + end unreachable end block (result i32) @@ -596,9 +270,9 @@ i32.eqz if i32.const 12 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -612,36 +286,41 @@ i32.store offset=8 local.get $0 end + local.tee $4 + local.get $4 + i32.load local.get $1 + call $~lib/rt/stub/__retainRelease i32.store local.get $1 local.get $2 i32.add - local.set $4 + local.set $5 local.get $0 - local.get $4 + local.get $5 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load + call $~lib/rt/stub/__retain ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/polyfills/bswap (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const -16711936 i32.and @@ -655,7 +334,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getFloat32 (; 17 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $~lib/dataview/DataView#getFloat32 (; 14 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $1 i32.const 0 i32.lt_s @@ -667,8 +346,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 44 i32.const 6 call $~lib/builtins/abort @@ -691,7 +370,7 @@ f32.reinterpret_i32 end ) - (func $~lib/polyfills/bswap (; 18 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 15 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -730,7 +409,7 @@ i64.rotr return ) - (func $~lib/dataview/DataView#getFloat64 (; 19 ;) (type $FUNCSIG$diii) (param $0 i32) (param $1 i32) (param $2 i32) (result f64) + (func $~lib/dataview/DataView#getFloat64 (; 16 ;) (type $FUNCSIG$diii) (param $0 i32) (param $1 i32) (param $2 i32) (result f64) local.get $1 i32.const 0 i32.lt_s @@ -742,8 +421,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -766,14 +445,14 @@ f64.reinterpret_i64 end ) - (func $~lib/dataview/DataView#getInt8 (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getInt8 (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 69 i32.const 49 call $~lib/builtins/abort @@ -785,7 +464,7 @@ i32.add i32.load8_s ) - (func $~lib/polyfills/bswap (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 8 i32.shl @@ -801,7 +480,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getInt16 (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt16 (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -814,8 +493,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 77 i32.const 7 call $~lib/builtins/abort @@ -835,7 +514,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/polyfills/bswap (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const -16711936 i32.and @@ -849,7 +528,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getInt32 (; 24 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt32 (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -862,8 +541,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 86 i32.const 7 call $~lib/builtins/abort @@ -883,7 +562,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/polyfills/bswap (; 25 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 22 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -922,7 +601,7 @@ i64.rotr return ) - (func $~lib/dataview/DataView#getInt64 (; 26 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) + (func $~lib/dataview/DataView#getInt64 (; 23 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $1 i32.const 0 @@ -935,8 +614,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 180 i32.const 6 call $~lib/builtins/abort @@ -956,14 +635,14 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint8 (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getUint8 (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 92 i32.const 49 call $~lib/builtins/abort @@ -975,7 +654,7 @@ i32.add i32.load8_u ) - (func $~lib/polyfills/bswap (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 8 i32.shl @@ -989,7 +668,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getUint16 (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint16 (; 26 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -1002,8 +681,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 100 i32.const 6 call $~lib/builtins/abort @@ -1023,7 +702,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint32 (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint32 (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -1036,8 +715,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 109 i32.const 6 call $~lib/builtins/abort @@ -1057,7 +736,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint64 (; 31 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) + (func $~lib/dataview/DataView#getUint64 (; 28 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $1 i32.const 0 @@ -1070,8 +749,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 189 i32.const 6 call $~lib/builtins/abort @@ -1091,7 +770,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#setFloat32 (; 32 ;) (type $FUNCSIG$viifi) (param $0 i32) (param $1 i32) (param $2 f32) (param $3 i32) + (func $~lib/dataview/DataView#setFloat32 (; 29 ;) (type $FUNCSIG$viifi) (param $0 i32) (param $1 i32) (param $2 f32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1103,8 +782,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 118 i32.const 6 call $~lib/builtins/abort @@ -1129,7 +808,7 @@ i32.store end ) - (func $~lib/dataview/DataView#setFloat64 (; 33 ;) (type $FUNCSIG$viidi) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 i32) + (func $~lib/dataview/DataView#setFloat64 (; 30 ;) (type $FUNCSIG$viidi) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1141,8 +820,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 127 i32.const 6 call $~lib/builtins/abort @@ -1167,14 +846,14 @@ i64.store end ) - (func $~lib/dataview/DataView#setInt8 (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt8 (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 133 i32.const 49 call $~lib/builtins/abort @@ -1187,7 +866,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#setInt16 (; 35 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setInt16 (; 32 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1199,8 +878,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 141 i32.const 6 call $~lib/builtins/abort @@ -1219,7 +898,7 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setInt32 (; 36 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setInt32 (; 33 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1231,8 +910,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 149 i32.const 6 call $~lib/builtins/abort @@ -1251,7 +930,7 @@ end i32.store ) - (func $~lib/dataview/DataView#setInt64 (; 37 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) + (func $~lib/dataview/DataView#setInt64 (; 34 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1263,8 +942,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 198 i32.const 6 call $~lib/builtins/abort @@ -1283,14 +962,14 @@ end i64.store ) - (func $~lib/dataview/DataView#setUint8 (; 38 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint8 (; 35 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 154 i32.const 49 call $~lib/builtins/abort @@ -1303,7 +982,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#setUint16 (; 39 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setUint16 (; 36 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1315,8 +994,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 162 i32.const 6 call $~lib/builtins/abort @@ -1335,7 +1014,7 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setUint32 (; 40 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setUint32 (; 37 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1347,8 +1026,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 170 i32.const 6 call $~lib/builtins/abort @@ -1367,7 +1046,7 @@ end i32.store ) - (func $~lib/dataview/DataView#setUint64 (; 41 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) + (func $~lib/dataview/DataView#setUint64 (; 38 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1379,8 +1058,8 @@ i32.gt_s i32.or if - i32.const 0 - i32.const 192 + i32.const 128 + i32.const 240 i32.const 206 i32.const 6 call $~lib/builtins/abort @@ -1399,7 +1078,7 @@ end i64.store ) - (func $~lib/dataview/DataView#constructor|trampoline (; 42 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 39 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -1424,28 +1103,33 @@ local.get $3 call $~lib/dataview/DataView#constructor ) - (func $~lib/dataview/DataView#get:byteOffset (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__skippedRelease (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $~lib/dataview/DataView#get:byteOffset (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/dataview/DataView#get:byteLength (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#get:byteLength (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $start:std/dataview (; 45 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (func $start:std/dataview (; 43 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 i32.const 8 call $~lib/typedarray/Uint8Array#constructor @@ -1485,6 +1169,7 @@ i32.const 0 global.get $std/dataview/array call $~lib/typedarray/Uint8Array#get:buffer + local.tee $0 global.get $std/dataview/array call $~lib/arraybuffer/ArrayBufferView#get:byteOffset global.get $std/dataview/array @@ -1500,7 +1185,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 14 i32.const 0 call $~lib/builtins/abort @@ -1515,7 +1200,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 15 i32.const 0 call $~lib/builtins/abort @@ -1530,7 +1215,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 16 i32.const 0 call $~lib/builtins/abort @@ -1545,7 +1230,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 17 i32.const 0 call $~lib/builtins/abort @@ -1560,7 +1245,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 18 i32.const 0 call $~lib/builtins/abort @@ -1575,7 +1260,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 20 i32.const 0 call $~lib/builtins/abort @@ -1590,7 +1275,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 21 i32.const 0 call $~lib/builtins/abort @@ -1605,7 +1290,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 22 i32.const 0 call $~lib/builtins/abort @@ -1620,7 +1305,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 23 i32.const 0 call $~lib/builtins/abort @@ -1635,7 +1320,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 24 i32.const 0 call $~lib/builtins/abort @@ -1650,7 +1335,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 26 i32.const 0 call $~lib/builtins/abort @@ -1665,7 +1350,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 27 i32.const 0 call $~lib/builtins/abort @@ -1679,7 +1364,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 29 i32.const 0 call $~lib/builtins/abort @@ -1693,7 +1378,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 30 i32.const 0 call $~lib/builtins/abort @@ -1707,7 +1392,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 31 i32.const 0 call $~lib/builtins/abort @@ -1721,7 +1406,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 32 i32.const 0 call $~lib/builtins/abort @@ -1735,7 +1420,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 33 i32.const 0 call $~lib/builtins/abort @@ -1749,7 +1434,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 34 i32.const 0 call $~lib/builtins/abort @@ -1763,7 +1448,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 35 i32.const 0 call $~lib/builtins/abort @@ -1777,7 +1462,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 36 i32.const 0 call $~lib/builtins/abort @@ -1796,7 +1481,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 38 i32.const 0 call $~lib/builtins/abort @@ -1815,7 +1500,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 39 i32.const 0 call $~lib/builtins/abort @@ -1834,7 +1519,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 40 i32.const 0 call $~lib/builtins/abort @@ -1853,7 +1538,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 41 i32.const 0 call $~lib/builtins/abort @@ -1872,7 +1557,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 42 i32.const 0 call $~lib/builtins/abort @@ -1891,7 +1576,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 43 i32.const 0 call $~lib/builtins/abort @@ -1910,7 +1595,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 44 i32.const 0 call $~lib/builtins/abort @@ -1929,7 +1614,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 46 i32.const 0 call $~lib/builtins/abort @@ -1948,7 +1633,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 47 i32.const 0 call $~lib/builtins/abort @@ -1967,7 +1652,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 48 i32.const 0 call $~lib/builtins/abort @@ -1986,7 +1671,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 49 i32.const 0 call $~lib/builtins/abort @@ -2005,7 +1690,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 50 i32.const 0 call $~lib/builtins/abort @@ -2024,7 +1709,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 51 i32.const 0 call $~lib/builtins/abort @@ -2043,7 +1728,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 52 i32.const 0 call $~lib/builtins/abort @@ -2058,7 +1743,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 54 i32.const 0 call $~lib/builtins/abort @@ -2073,7 +1758,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 55 i32.const 0 call $~lib/builtins/abort @@ -2088,7 +1773,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 56 i32.const 0 call $~lib/builtins/abort @@ -2103,7 +1788,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 57 i32.const 0 call $~lib/builtins/abort @@ -2118,7 +1803,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 58 i32.const 0 call $~lib/builtins/abort @@ -2133,7 +1818,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 60 i32.const 0 call $~lib/builtins/abort @@ -2148,7 +1833,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 61 i32.const 0 call $~lib/builtins/abort @@ -2163,7 +1848,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 62 i32.const 0 call $~lib/builtins/abort @@ -2178,7 +1863,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 63 i32.const 0 call $~lib/builtins/abort @@ -2193,7 +1878,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 64 i32.const 0 call $~lib/builtins/abort @@ -2208,7 +1893,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 66 i32.const 0 call $~lib/builtins/abort @@ -2223,7 +1908,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 67 i32.const 0 call $~lib/builtins/abort @@ -2237,7 +1922,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 69 i32.const 0 call $~lib/builtins/abort @@ -2251,7 +1936,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 70 i32.const 0 call $~lib/builtins/abort @@ -2265,7 +1950,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 71 i32.const 0 call $~lib/builtins/abort @@ -2279,7 +1964,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 72 i32.const 0 call $~lib/builtins/abort @@ -2293,7 +1978,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 73 i32.const 0 call $~lib/builtins/abort @@ -2307,7 +1992,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 74 i32.const 0 call $~lib/builtins/abort @@ -2321,7 +2006,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 75 i32.const 0 call $~lib/builtins/abort @@ -2335,7 +2020,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 76 i32.const 0 call $~lib/builtins/abort @@ -2352,7 +2037,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 78 i32.const 0 call $~lib/builtins/abort @@ -2369,7 +2054,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 79 i32.const 0 call $~lib/builtins/abort @@ -2386,7 +2071,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 80 i32.const 0 call $~lib/builtins/abort @@ -2403,7 +2088,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 81 i32.const 0 call $~lib/builtins/abort @@ -2420,7 +2105,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 82 i32.const 0 call $~lib/builtins/abort @@ -2437,7 +2122,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 83 i32.const 0 call $~lib/builtins/abort @@ -2454,7 +2139,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 84 i32.const 0 call $~lib/builtins/abort @@ -2471,7 +2156,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 86 i32.const 0 call $~lib/builtins/abort @@ -2488,7 +2173,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 87 i32.const 0 call $~lib/builtins/abort @@ -2505,7 +2190,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 88 i32.const 0 call $~lib/builtins/abort @@ -2522,7 +2207,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 89 i32.const 0 call $~lib/builtins/abort @@ -2539,7 +2224,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 90 i32.const 0 call $~lib/builtins/abort @@ -2556,7 +2241,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 91 i32.const 0 call $~lib/builtins/abort @@ -2573,7 +2258,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 92 i32.const 0 call $~lib/builtins/abort @@ -2588,7 +2273,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 94 i32.const 0 call $~lib/builtins/abort @@ -2603,7 +2288,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 95 i32.const 0 call $~lib/builtins/abort @@ -2618,7 +2303,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 96 i32.const 0 call $~lib/builtins/abort @@ -2633,7 +2318,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 97 i32.const 0 call $~lib/builtins/abort @@ -2648,7 +2333,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 98 i32.const 0 call $~lib/builtins/abort @@ -2663,7 +2348,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 100 i32.const 0 call $~lib/builtins/abort @@ -2678,7 +2363,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 101 i32.const 0 call $~lib/builtins/abort @@ -2693,7 +2378,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 102 i32.const 0 call $~lib/builtins/abort @@ -2708,7 +2393,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 103 i32.const 0 call $~lib/builtins/abort @@ -2723,7 +2408,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 104 i32.const 0 call $~lib/builtins/abort @@ -2738,7 +2423,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 106 i32.const 0 call $~lib/builtins/abort @@ -2753,7 +2438,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 107 i32.const 0 call $~lib/builtins/abort @@ -2773,7 +2458,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 110 i32.const 0 call $~lib/builtins/abort @@ -2793,7 +2478,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 113 i32.const 0 call $~lib/builtins/abort @@ -2813,7 +2498,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 116 i32.const 0 call $~lib/builtins/abort @@ -2833,7 +2518,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 119 i32.const 0 call $~lib/builtins/abort @@ -2851,7 +2536,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 122 i32.const 0 call $~lib/builtins/abort @@ -2875,7 +2560,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 125 i32.const 0 call $~lib/builtins/abort @@ -2899,7 +2584,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 128 i32.const 0 call $~lib/builtins/abort @@ -2919,7 +2604,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 131 i32.const 0 call $~lib/builtins/abort @@ -2939,7 +2624,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 134 i32.const 0 call $~lib/builtins/abort @@ -2959,7 +2644,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 137 i32.const 0 call $~lib/builtins/abort @@ -2979,7 +2664,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 140 i32.const 0 call $~lib/builtins/abort @@ -2997,7 +2682,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 143 i32.const 0 call $~lib/builtins/abort @@ -3019,7 +2704,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 146 i32.const 0 call $~lib/builtins/abort @@ -3041,7 +2726,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 149 i32.const 0 call $~lib/builtins/abort @@ -3061,7 +2746,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 152 i32.const 0 call $~lib/builtins/abort @@ -3081,7 +2766,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 155 i32.const 0 call $~lib/builtins/abort @@ -3101,7 +2786,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 158 i32.const 0 call $~lib/builtins/abort @@ -3121,22 +2806,25 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 161 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/dataview/view block (result i32) i32.const 1 global.set $~lib/argc i32.const 0 global.get $std/dataview/array call $~lib/typedarray/Uint8Array#get:buffer + local.tee $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#constructor|trampoline end + call $~lib/rt/stub/__skippedRelease global.set $std/dataview/view global.get $std/dataview/view call $~lib/dataview/DataView#get:byteOffset @@ -3145,7 +2833,7 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 164 i32.const 0 call $~lib/builtins/abort @@ -3158,208 +2846,20 @@ i32.eqz if i32.const 0 - i32.const 240 + i32.const 288 i32.const 165 i32.const 0 call $~lib/builtins/abort unreachable end - ) - (func $~lib/runtime/runtime.instanceof (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 - local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate + call $~lib/rt/stub/__release local.get $1 - call $~lib/util/runtime/register + call $~lib/rt/stub/__release ) - (func $~lib/runtime/runtime.newString (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 - ) - (func $~lib/runtime/runtime.retain (; 52 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 53 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 54 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 288 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 56 ;) (type $FUNCSIG$v) + (func $start (; 44 ;) (type $FUNCSIG$v) call $start:std/dataview ) - (func $null (; 57 ;) (type $FUNCSIG$v) + (func $null (; 45 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index e5f42c2f..4cd4f616 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -2,58 +2,31 @@ (type $FUNCSIG$diiiiiid (func (param i32 i32 i32 i32 i32 i32 f64) (result f64))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$d (func (result f64))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$i (func (result i32))) (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16") - (data (i32.const 24) "s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") - (data (i32.const 48) "\10\00\00\00(") - (data (i32.const 64) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 104) "\10\00\00\00\1e") - (data (i32.const 120) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 152) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s") (global $std/date/creationTime (mut i64) (i64.const 0)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/date/date (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select + i32.const 23 i32.add - i32.const 7 - i32.add - i32.const -8 + i32.const -16 i32.and local.tee $0 current_memory @@ -91,64 +64,19 @@ end end local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 + global.set $~lib/rt/stub/offset local.get $1 i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 304 - i32.le_u - if - i32.const 0 - i32.const 64 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 64 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store + local.tee $0 + i32.const 3 + i32.store offset=8 local.get $0 + i32.const 8 + i32.store offset=12 + local.get $1 ) - (func $start:std/date (; 6 ;) (type $FUNCSIG$v) + (func $start:std/date (; 4 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 1970 @@ -222,16 +150,13 @@ call $~lib/builtins/abort unreachable end - i32.const 304 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 48 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset global.get $std/date/creationTime local.set $1 - i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + call $~lib/rt/stub/__alloc local.tee $0 i64.const 0 i64.store @@ -253,15 +178,15 @@ unreachable end global.get $std/date/date + local.tee $0 global.get $std/date/creationTime i64.const 1 i64.add + local.tee $1 i64.store - global.get $std/date/date + local.get $0 i64.load - global.get $std/date/creationTime - i64.const 1 - i64.add + local.get $1 i64.ne if i32.const 0 @@ -272,187 +197,10 @@ unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 152 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 152 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 152 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 152 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 152 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 152 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and - if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 120 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 14 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 120 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 15 ;) (type $FUNCSIG$v) + (func $start (; 5 ;) (type $FUNCSIG$v) call $start:std/date ) - (func $null (; 16 ;) (type $FUNCSIG$v) + (func $null (; 6 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 7819724e..4350f3e8 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -3,96 +3,70 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$d (func (result f64))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$ji (func (param i32) (result i64))) (type $FUNCSIG$jij (func (param i32 i64) (result i64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00") - (data (i32.const 48) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 104) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 152) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/date/creationTime (mut i64) (i64.const 0)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/date/date (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 152)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 304)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 48)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/util/runtime/adjust (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -102,22 +76,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -126,76 +100,32 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/date/Date#constructor (; 8 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/date/Date#constructor (; 5 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -207,17 +137,17 @@ i64.store local.get $0 ) - (func $~lib/date/Date#getTime (; 9 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/date/Date#getTime (; 6 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) local.get $0 i64.load ) - (func $~lib/date/Date#setTime (; 10 ;) (type $FUNCSIG$jij) (param $0 i32) (param $1 i64) (result i64) + (func $~lib/date/Date#setTime (; 7 ;) (type $FUNCSIG$jij) (param $0 i32) (param $1 i64) (result i64) local.get $0 local.get $1 i64.store local.get $1 ) - (func $start:std/date (; 11 ;) (type $FUNCSIG$v) + (func $start:std/date (; 8 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -353,16 +283,16 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 global.get $std/date/creationTime call $~lib/date/Date#constructor @@ -402,207 +332,9 @@ unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 - local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 120 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 - ) - (func $~lib/runtime/runtime.retain (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 21 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 120 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 23 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) call $start:std/date ) - (func $null (; 24 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index 040e21ee..61c4825b 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -3,13 +3,10 @@ (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\10") - (data (i32.const 24) "\10\00\00\00\02") - (data (i32.const 40) "a") - (data (i32.const 48) "\10\00\00\00\04") - (data (i32.const 64) "a\00b") - (data (i32.const 72) "\10\00\00\00\06") - (data (i32.const 88) "a\00b\00c") + (data (i32.const 12) "\01\00\00\00\01") + (data (i32.const 24) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 48) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 72) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") (export "memory" (memory $0)) (start $start) (func $~lib/util/hash/hashStr (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -24,7 +21,7 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u i32.const 1 diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 885ce43d..232c43b6 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -1,29 +1,38 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 24) "\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00a\00") - (data (i32.const 48) "\10\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00a\00b\00") - (data (i32.const 72) "\10\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00a\00b\00c\00") + (data (i32.const 8) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 24) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 48) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b\00") + (data (i32.const 72) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) (export "memory" (memory $0)) (start $start) - (func $~lib/string/String#get:length (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 0 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + ) + (func $~lib/string/String#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u ) - (func $~lib/util/hash/hashStr (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__release (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/util/hash/hashStr (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const -2128831035 local.set $1 local.get $0 @@ -66,11 +75,15 @@ end end local.get $1 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) - (func $std/hash/check (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/hash/check (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 1 ) - (func $~lib/util/hash/hash32 (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -112,7 +125,7 @@ local.set $1 local.get $1 ) - (func $~lib/util/hash/hash64 (; 4 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 6 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -200,59 +213,85 @@ local.set $3 local.get $3 ) - (func $start:std/hash (; 5 ;) (type $FUNCSIG$v) + (func $start:std/hash (; 7 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 f32) - (local $2 f64) + (local $1 i32) + (local $2 f32) + (local $3 f64) block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) i32.const 0 + call $~lib/rt/stub/__retain local.set $0 local.get $0 call $~lib/util/hash/hashStr + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) i32.const 24 + call $~lib/rt/stub/__retain local.set $0 local.get $0 call $~lib/util/hash/hashStr + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) i32.const 40 + call $~lib/rt/stub/__retain local.set $0 local.get $0 call $~lib/util/hash/hashStr + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) i32.const 64 + call $~lib/rt/stub/__retain local.set $0 local.get $0 call $~lib/util/hash/hashStr + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.4 (result i32) i32.const 88 + call $~lib/rt/stub/__retain local.set $0 local.get $0 call $~lib/util/hash/hashStr + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 br $~lib/util/hash/HASH<~lib/string/String>|inlined.4 end call $std/hash/check drop block $~lib/util/hash/HASH|inlined.0 (result i32) f32.const 0 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -261,8 +300,8 @@ drop block $~lib/util/hash/HASH|inlined.1 (result i32) f32.const 1 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -271,8 +310,8 @@ drop block $~lib/util/hash/HASH|inlined.2 (result i32) f32.const 1.100000023841858 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -281,8 +320,8 @@ drop block $~lib/util/hash/HASH|inlined.3 (result i32) f32.const 0 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -291,8 +330,8 @@ drop block $~lib/util/hash/HASH|inlined.4 (result i32) f32.const inf - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.4 @@ -301,8 +340,8 @@ drop block $~lib/util/hash/HASH|inlined.5 (result i32) f32.const nan:0x400000 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.5 @@ -311,8 +350,8 @@ drop block $~lib/util/hash/HASH|inlined.0 (result i32) f64.const 0 - local.set $2 - local.get $2 + local.set $3 + local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -321,8 +360,8 @@ drop block $~lib/util/hash/HASH|inlined.1 (result i32) f64.const 1 - local.set $2 - local.get $2 + local.set $3 + local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -331,8 +370,8 @@ drop block $~lib/util/hash/HASH|inlined.2 (result i32) f64.const 1.1 - local.set $2 - local.get $2 + local.set $3 + local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 @@ -341,8 +380,8 @@ drop block $~lib/util/hash/HASH|inlined.3 (result i32) f64.const 0 - local.set $2 - local.get $2 + local.set $3 + local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -351,8 +390,8 @@ drop block $~lib/util/hash/HASH|inlined.4 (result i32) f64.const inf - local.set $2 - local.get $2 + local.set $3 + local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.4 @@ -361,8 +400,8 @@ drop block $~lib/util/hash/HASH|inlined.5 (result i32) f64.const nan:0x8000000000000 - local.set $2 - local.get $2 + local.set $3 + local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.5 @@ -370,9 +409,9 @@ call $std/hash/check drop ) - (func $start (; 6 ;) (type $FUNCSIG$v) + (func $start (; 8 ;) (type $FUNCSIG$v) call $start:std/hash ) - (func $null (; 7 ;) (type $FUNCSIG$v) + (func $null (; 9 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/libm.untouched.wat b/tests/compiler/std/libm.untouched.wat index f1cdd665..cdc5d88c 100644 --- a/tests/compiler/std/libm.untouched.wat +++ b/tests/compiler/std/libm.untouched.wat @@ -344,9 +344,7 @@ local.get $2 i32.const 1 i32.shl - i32.const 1017118720 - i32.const 1 - i32.shl + i32.const 2034237440 i32.lt_u if local.get $0 @@ -744,9 +742,7 @@ i64.and local.set $1 local.get $1 - i64.const 1023 - i64.const 1 - i64.add + i64.const 1024 i64.lt_u if local.get $0 @@ -771,9 +767,7 @@ return end local.get $1 - i64.const 1023 - i64.const 26 - i64.add + i64.const 1049 i64.lt_u if f64.const 2 @@ -984,9 +978,7 @@ f64.reinterpret_i64 local.set $3 local.get $2 - i64.const 1023 - i64.const 26 - i64.add + i64.const 1049 i64.ge_u if local.get $3 @@ -996,9 +988,7 @@ local.set $3 else local.get $2 - i64.const 1023 - i64.const 1 - i64.add + i64.const 1024 i64.ge_u if f64.const 2 @@ -1019,9 +1009,7 @@ local.set $3 else local.get $2 - i64.const 1023 - i64.const 26 - i64.sub + i64.const 997 i64.ge_u if local.get $3 @@ -1359,15 +1347,11 @@ f64.reinterpret_i64 local.set $4 local.get $2 - i64.const 1023 - i64.const 1 - i64.sub + i64.const 1022 i64.lt_u if local.get $2 - i64.const 1023 - i64.const 32 - i64.sub + i64.const 991 i64.ge_u if f64.const 0.5 @@ -1650,9 +1634,7 @@ end end local.get $3 - i32.const 64 - i32.const 20 - i32.shl + i32.const 67108864 i32.add local.get $5 i32.lt_u @@ -1684,9 +1666,7 @@ i32.and if (result i32) local.get $5 - i32.const 64 - i32.const 20 - i32.shl + i32.const 67108864 i32.add local.get $3 i32.lt_u @@ -2549,11 +2529,7 @@ i32.lt_u if local.get $2 - i32.const 1072693248 - i32.const 26 - i32.const 20 - i32.shl - i32.sub + i32.const 1045430272 i32.lt_u if f64.const 1 @@ -2734,9 +2710,7 @@ f64.const 1 local.set $7 local.get $5 - i32.const 1023 - i32.const 510 - i32.add + i32.const 1533 i32.gt_s if f64.const 5260135901548373507240989e186 @@ -2751,9 +2725,7 @@ local.set $1 else local.get $6 - i32.const 1023 - i32.const 450 - i32.sub + i32.const 573 i32.lt_s if f64.const 1.90109156629516e-211 @@ -4602,11 +4574,7 @@ i32.lt_u if local.get $3 - i32.const 1072693248 - i32.const 26 - i32.const 20 - i32.shl - i32.sub + i32.const 1045430272 i32.lt_u if local.get $0 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 1a5c4f1f..743a4df3 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1,12 +1,12 @@ (module (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -22,23 +22,23 @@ (type $FUNCSIG$vif (func (param i32 f32))) (type $FUNCSIG$vid (func (param i32 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 56) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 160) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 216) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 256) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") - (data (i32.const 312) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 368) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s") - (data (i32.const 424) "\1a\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L\08\00\00\00\00\00\00L\08\00\00\00\00\00\00L\10\00\00\00\00\00\00L\10\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00L@\00\00\00\00\00\00L \00\00\00\00\00\00L@") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 208) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 400) "\0d\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L\08\00\00\00\00\00\00L\08\00\00\00\00\00\00L\10\00\00\00\00\00\00L\10\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00L@\00\00\00\00\00\00L \00\00\00\00\00\00L@") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -54,7 +54,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -76,7 +76,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -121,7 +121,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -218,7 +218,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -232,7 +232,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -305,7 +305,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -362,7 +362,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -377,7 +377,7 @@ i32.ne if i32.const 0 - i32.const 128 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -427,7 +427,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -513,7 +513,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 384 i32.const 4 call $~lib/builtins/abort @@ -530,7 +530,7 @@ i32.lt_u if i32.const 0 - i32.const 128 + i32.const 24 i32.const 394 i32.const 15 call $~lib/builtins/abort @@ -558,7 +558,7 @@ i32.lt_u if i32.const 0 - i32.const 128 + i32.const 24 i32.const 406 i32.const 4 call $~lib/builtins/abort @@ -626,10 +626,10 @@ if unreachable end - i32.const 640 + i32.const 512 i32.const 0 i32.store - i32.const 2208 + i32.const 2080 i32.const 0 i32.store i32.const 0 @@ -643,7 +643,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 640 + i32.const 512 i32.add i32.const 0 i32.store offset=4 @@ -662,7 +662,7 @@ i32.add i32.const 2 i32.shl - i32.const 640 + i32.const 512 i32.add i32.const 0 i32.store offset=96 @@ -680,13 +680,13 @@ br $repeat|0 end end - i32.const 640 - i32.const 2224 + i32.const 512 + i32.const 2096 current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 640 + i32.const 512 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) @@ -694,8 +694,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 176 - i32.const 128 + i32.const 72 + i32.const 24 i32.const 446 i32.const 29 call $~lib/builtins/abort @@ -770,7 +770,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 336 i32.const 13 call $~lib/builtins/abort @@ -822,7 +822,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 349 i32.const 17 call $~lib/builtins/abort @@ -892,7 +892,7 @@ i32.and if i32.const 0 - i32.const 128 + i32.const 24 i32.const 363 i32.const 13 call $~lib/builtins/abort @@ -978,7 +978,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 476 i32.const 15 call $~lib/builtins/abort @@ -993,7 +993,7 @@ i32.lt_u if i32.const 0 - i32.const 128 + i32.const 24 i32.const 478 i32.const 13 call $~lib/builtins/abort @@ -1033,7 +1033,60 @@ i32.const 16 i32.add ) - (func $~lib/memory/memory.fill (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 508 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/memory/memory.fill (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -1244,6576 +1297,29 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741808 i32.gt_u if - i32.const 24 - i32.const 72 + i32.const 176 + i32.const 224 i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 call $~lib/memory/memory.fill local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#clear (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.load - call $~lib/rt/purerc/__release - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 17 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load8_s - i32.store8 - local.get $2 - local.get $3 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $3 - i32.load8_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $3 - i32.const 12 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $3 - local.set $5 - local.get $0 - local.get $1 - local.get $3 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 12 - i32.mul - local.get $4 - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 24 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 25 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#has (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $2 - local.get $3 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $3 - i32.load8_u - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $3 - i32.const 12 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $3 - local.set $5 - local.get $0 - local.get $1 - local.get $3 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 12 - i32.mul - local.get $4 - i32.add - local.tee $3 - local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 31 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 255 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 255 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 32 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $7 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $8 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $8 - i32.ne - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load16_s - i32.store16 - local.get $2 - local.get $3 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $3 - i32.load16_s - local.tee $6 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $6 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $3 - i32.const 12 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 36 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $3 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $3 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.tee $3 - local.set $5 - local.get $0 - local.get $1 - local.get $3 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 12 - i32.mul - local.get $4 - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 39 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 40 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#has (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - local.tee $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $7 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $8 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $8 - i32.ne - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load16_u - i32.store16 - local.get $2 - local.get $3 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $3 - i32.load16_u - local.tee $6 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $6 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $3 - i32.const 12 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.const 65535 - i32.and - local.tee $3 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $3 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.tee $3 - local.set $5 - local.get $0 - local.get $1 - local.get $3 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 12 - i32.mul - local.get $4 - i32.add - local.tee $3 - local.get $1 - i32.store16 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - local.tee $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 46 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 65535 - i32.and - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 65535 - i32.and - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 65535 - i32.and - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 47 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load - local.get $1 - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load - i32.store - local.get $2 - local.get $3 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $3 - i32.load - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $3 - i32.const 12 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 12 - i32.mul - local.get $4 - i32.add - local.tee $3 - local.get $1 - i32.store - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 54 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 55 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 56 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $std/map/testNumeric (; 57 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.load - call $~lib/rt/purerc/__release - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 59 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash64 (; 60 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (; 61 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i64.load - local.get $1 - i64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 62 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i64.load - i64.store - local.get $2 - local.get $3 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $3 - i64.load - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=12 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $3 - i32.const 16 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 64 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - local.tee $3 - local.get $1 - i64.store - local.get $3 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=12 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 65 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=8 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 66 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 67 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 68 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $std/map/testNumeric (; 69 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.wrap_i64 - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.wrap_i64 - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 70 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 71 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f32.load - local.get $1 - f32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 72 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 73 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - f32.load - f32.store - local.get $2 - local.get $3 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $3 - f32.load - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $3 - i32.const 12 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 74 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 12 - i32.mul - local.get $4 - i32.add - local.tee $3 - local.get $1 - f32.store - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 75 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 76 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 77 ;) (type $FUNCSIG$v) - (local $0 f32) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f32_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f32_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#constructor (; 78 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 79 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f64.load - local.get $1 - f64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 80 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - f64.load - f64.store - local.get $2 - local.get $3 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $3 - f64.load - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=12 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $3 - i32.const 16 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 82 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.tee $5 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - local.tee $3 - local.get $1 - f64.store - local.get $3 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $5 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=12 - local.get $0 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 83 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=8 - else - unreachable - end - ) - (func $~lib/map/Map#delete (; 84 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/map/Map#rehash - end - ) - (func $std/map/testNumeric (; 85 ;) (type $FUNCSIG$v) - (local $0 f64) - (local $1 i32) - call $~lib/map/Map#constructor - local.set $1 - loop $repeat|0 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|0 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $repeat|1 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f64_s - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#get - local.get $0 - i32.trunc_f64_s - i32.const 20 - i32.add - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - local.get $0 - i32.trunc_f64_s - i32.const 10 - i32.add - call $~lib/map/Map#set - local.get $1 - local.get $0 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/map/Map#delete - local.get $1 - local.get $0 - call $~lib/map/Map#has - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $start (; 86 ;) (type $FUNCSIG$v) - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - ) - (func $~lib/rt/purerc/increment (; 87 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 272 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/purerc/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 272 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 640 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -7822,7 +1328,7 @@ i32.and if i32.const 0 - i32.const 128 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -7839,32 +1345,27 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 424 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 400 + i32.load + i32.gt_u if - i32.const 328 - i32.const 384 - i32.const 55 - i32.const 34 + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 424 + i32.const 404 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -8037,13 +1538,13 @@ end end ) - (func $~lib/rt/purerc/growRoots (; 92 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/purerc/CUR - global.get $~lib/rt/purerc/ROOTS + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS local.tee $2 i32.sub local.tee $1 @@ -8063,25 +1564,25 @@ local.get $1 call $~lib/memory/memory.copy local.get $0 - global.set $~lib/rt/purerc/ROOTS + global.set $~lib/rt/pure/ROOTS local.get $0 local.get $1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR local.get $0 local.get $3 i32.add - global.set $~lib/rt/purerc/END + global.set $~lib/rt/pure/END ) - (func $~lib/rt/purerc/appendRoot (; 93 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.tee $1 - global.get $~lib/rt/purerc/END + global.get $~lib/rt/pure/END i32.ge_u if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR local.set $1 end local.get $1 @@ -8090,9 +1591,9 @@ local.get $1 i32.const 1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/purerc/decrement (; 94 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8102,14 +1603,14 @@ i32.and local.set $1 local.get $0 - call $~lib/rt/purerc/onDecrement + call $~lib/rt/pure/onDecrement local.get $0 i32.load i32.const 1 i32.and if i32.const 0 - i32.const 272 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -8123,7 +1624,7 @@ i32.const 16 i32.add i32.const 1 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members local.get $2 i32.const -2147483648 i32.and @@ -8142,7 +1643,7 @@ i32.le_u if i32.const 0 - i32.const 272 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -8150,7 +1651,7 @@ end local.get $0 i32.load offset=8 - call $~lib/rt/common/__typeinfo + call $~lib/rt/__typeinfo i32.const 8 i32.and if @@ -8177,49 +1678,6555 @@ i32.eqz if local.get $0 - call $~lib/rt/purerc/appendRoot + call $~lib/rt/pure/appendRoot end end end ) - (func $~lib/rt/purerc/__retainRelease (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.const 640 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $1 - i32.const 640 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - end - local.get $0 - ) - (func $~lib/rt/purerc/__release (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 640 + i32.const 508 i32.gt_u if local.get $0 i32.const 16 i32.sub - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/map/Map#clear (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 26 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/rt/pure/__retainRelease (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.ne + if + local.get $1 + i32.const 508 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + i32.const 508 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + end + local.get $1 + ) + (func $~lib/rt/pure/__release (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 508 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement end ) - (func $~lib/rt/purerc/markGray (; 97 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#rehash (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load8_s + i32.store8 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load8_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 32 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 + local.get $0 + local.get $1 + local.get $3 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 35 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 36 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#has (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load8_u + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 + local.get $0 + local.get $1 + local.get $3 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 42 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 43 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $7 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $8 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $8 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load16_s + i32.store16 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load16_s + local.tee $6 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $6 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $3 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $3 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 + local.get $0 + local.get $1 + local.get $3 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 50 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 51 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#has (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $7 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $8 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $8 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load16_u + i32.store16 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load16_u + local.tee $6 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $6 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $3 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $3 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 + local.get $0 + local.get $1 + local.get $3 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 + local.get $1 + i32.store16 + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 56 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 57 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 58 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash32 (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load + local.get $1 + i32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 62 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load + i32.store + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 63 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + local.tee $5 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 66 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 67 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $std/map/testNumeric (; 68 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 70 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash64 (; 71 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (; 72 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i64.load + local.get $1 + i64.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 73 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 74 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i64.load + i64.store + local.get $2 + local.get $3 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $3 + i64.load + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=12 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $3 + i32.const 16 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 75 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + local.tee $5 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 76 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=8 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 77 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + i32.const 4 + local.get $2 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 78 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i64.const 100 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i64.const 100 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i64.const 50 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i64.const 50 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 79 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $std/map/testNumeric (; 80 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i64.const 100 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i64.const 100 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i64.const 50 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i64.const 50 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 81 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 82 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + f32.load + local.get $1 + f32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 83 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 84 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + f32.load + f32.store + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + f32.load + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 85 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.tee $5 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 + local.get $1 + f32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 86 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 87 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + i32.const 4 + local.get $2 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 88 ;) (type $FUNCSIG$v) + (local $0 f32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + f32.const 100 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f32_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f32_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + f32.const 100 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f32_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f32_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + f32.const 50 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f32_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + f32.const 50 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f32_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 89 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 90 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + f64.load + local.get $1 + f64.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 91 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 92 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + f64.load + f64.store + local.get $2 + local.get $3 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $3 + f64.load + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=12 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $3 + i32.const 16 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 93 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.tee $5 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $3 + local.get $1 + f64.store + local.get $3 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $5 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + local.get $4 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 94 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=8 + else + unreachable + end + ) + (func $~lib/map/Map#delete (; 95 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + i32.const 4 + local.get $2 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end + ) + (func $std/map/testNumeric (; 96 ;) (type $FUNCSIG$v) + (local $0 f64) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + f64.const 100 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f64_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|0 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + f64.const 100 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f64_s + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f64_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f64_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + f64.const 50 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.trunc_f64_s + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + f64.const 50 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f64_s + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $start (; 97 ;) (type $FUNCSIG$v) + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + ) + (func $~lib/rt/pure/markGray (; 98 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -8240,10 +8247,10 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 98 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 99 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -8254,9 +8261,9 @@ i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 99 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -8273,7 +8280,7 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 @@ -8286,11 +8293,11 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 101 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -8312,15 +8319,15 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 101 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 640 + i32.const 508 i32.lt_u if return @@ -8352,7 +8359,7 @@ br $case5|0 end local.get $0 - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement br $break|0 end local.get $0 @@ -8363,7 +8370,7 @@ i32.le_u if i32.const 0 - i32.const 272 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -8376,11 +8383,11 @@ i32.sub i32.store offset=4 local.get $0 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray br $break|0 end local.get $0 - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan br $break|0 end local.get $0 @@ -8396,7 +8403,7 @@ i32.ne if i32.const 0 - i32.const 272 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -8412,72 +8419,55 @@ i32.and if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack end br $break|0 end local.get $0 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite br $break|0 end i32.const 0 - i32.const 272 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/map/Map#__visit_impl (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 103 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $folding-inner0 + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable + end local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/builtins/__visit_members (; 103 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $folding-inner0 - block $switch$1$case$28 - block - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$case$28 $switch$1$default - end - unreachable - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/purerc/__visit - end - return - unreachable - end - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - end - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/rt/pure/__visit ) (func $null (; 104 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index ec2e1c7f..b6a4050c 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -1,12 +1,12 @@ (module (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -18,27 +18,27 @@ (type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32))) (type $FUNCSIG$vidi (func (param i32 f64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 56) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 160) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 216) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 256) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 312) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 368) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 424) "\1a\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L\08\00\00\00\00\00\00L\08\00\00\00\00\00\00L\10\00\00\00\00\00\00L\10\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00L@\00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 208) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") + (data (i32.const 400) "\0d\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L\08\00\00\00\00\00\00L\08\00\00\00\00\00\00L\10\00\00\00\00\00\00L\10\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00L@\00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 424)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 640)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/RTTI_BASE i32 (i32.const 400)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 508)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -61,7 +61,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 275 i32.const 13 call $~lib/builtins/abort @@ -86,7 +86,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -138,7 +138,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 290 i32.const 13 call $~lib/builtins/abort @@ -276,7 +276,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 203 i32.const 13 call $~lib/builtins/abort @@ -291,7 +291,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -390,7 +390,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 226 i32.const 15 call $~lib/builtins/abort @@ -453,7 +453,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 241 i32.const 13 call $~lib/builtins/abort @@ -469,7 +469,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 242 i32.const 13 call $~lib/builtins/abort @@ -526,7 +526,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 258 i32.const 13 call $~lib/builtins/abort @@ -653,7 +653,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 384 i32.const 4 call $~lib/builtins/abort @@ -678,7 +678,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 394 i32.const 15 call $~lib/builtins/abort @@ -709,7 +709,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 406 i32.const 4 call $~lib/builtins/abort @@ -786,7 +786,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.const 15 i32.add i32.const 15 @@ -935,8 +935,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 176 - i32.const 128 + i32.const 72 + i32.const 24 i32.const 446 i32.const 29 call $~lib/builtins/abort @@ -1030,7 +1030,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 336 i32.const 13 call $~lib/builtins/abort @@ -1055,6 +1055,8 @@ i32.shl i32.and local.set $6 + i32.const 0 + local.set $7 local.get $6 i32.eqz if @@ -1095,7 +1097,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 349 i32.const 17 call $~lib/builtins/abort @@ -1213,7 +1215,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 363 i32.const 13 call $~lib/builtins/abort @@ -1322,7 +1324,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 476 i32.const 15 call $~lib/builtins/abort @@ -1340,7 +1342,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 24 i32.const 478 i32.const 13 call $~lib/builtins/abort @@ -1384,7 +1386,68 @@ i32.const 16 i32.add ) - (func $~lib/memory/memory.fill (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/memory/memory.fill (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1647,21 +1710,21 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 i32.gt_u if - i32.const 24 - i32.const 72 + i32.const 176 + i32.const 224 i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.set $2 local.get $2 @@ -1669,8790 +1732,21 @@ local.get $1 call $~lib/memory/memory.fill local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#clear (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash8 (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const -2128831035 - local.get $0 - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load8_s - i32.store8 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load8_u - i32.store8 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 32 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 36 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash16 (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load16_s - i32.store16 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 47 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load16_u - i32.store16 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 57 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash32 (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 64 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 68 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 73 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 78 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 79 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/util/hash/hash64 (; 81 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 - local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - ) - (func $~lib/map/Map#find (; 82 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 83 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 84 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i64.load - i64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 85 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 86 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=8 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 88 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 89 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i64.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i64.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 92 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 93 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 94 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i64.load - i64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 95 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 96 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=8 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 98 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 99 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i64.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i64.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 102 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 103 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 104 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - f32.load - f32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f32.load - local.set $11 - local.get $11 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 105 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 106 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 108 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 109 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 f32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - f32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - f32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - f32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - f32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 110 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 112 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 113 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 114 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - f64.load - f64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f64.load - local.set $11 - local.get $11 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 115 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 116 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=8 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 118 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 119 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 f64) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - f64.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 9 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - f64.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 15 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 19 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - f64.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 25 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 26 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - f64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $start:std/map (; 120 ;) (type $FUNCSIG$v) - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - ) - (func $start (; 121 ;) (type $FUNCSIG$v) - call $start:std/map - ) - (func $~lib/rt/purerc/increment (; 122 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/purerc/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 124 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -10469,36 +1763,32 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/builtins/RTTI_BASE + global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if - i32.const 328 - i32.const 384 - i32.const 55 - i32.const 34 + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/memory/memory.copy (; 126 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10704,16 +1994,16 @@ end end ) - (func $~lib/rt/purerc/growRoots (; 127 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/purerc/ROOTS + global.get $~lib/rt/pure/ROOTS local.set $0 - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.get $0 i32.sub local.set $1 @@ -10739,26 +2029,26 @@ local.get $1 call $~lib/memory/memory.copy local.get $5 - global.set $~lib/rt/purerc/ROOTS + global.set $~lib/rt/pure/ROOTS local.get $5 local.get $1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR local.get $5 local.get $4 i32.add - global.set $~lib/rt/purerc/END + global.set $~lib/rt/pure/END ) - (func $~lib/rt/purerc/appendRoot (; 128 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/pure/CUR local.set $1 local.get $1 - global.get $~lib/rt/purerc/END + global.get $~lib/rt/pure/END i32.ge_u if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR local.set $1 end local.get $1 @@ -10767,9 +2057,9 @@ local.get $1 i32.const 1 i32.add - global.set $~lib/rt/purerc/CUR + global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/purerc/decrement (; 129 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10780,7 +2070,7 @@ i32.and local.set $2 local.get $0 - call $~lib/rt/purerc/onDecrement + call $~lib/rt/pure/onDecrement local.get $0 i32.load i32.const 1 @@ -10789,7 +2079,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -10803,7 +2093,7 @@ i32.const 16 i32.add i32.const 1 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members local.get $1 i32.const -2147483648 i32.and @@ -10828,7 +2118,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -10836,7 +2126,7 @@ end local.get $0 i32.load offset=8 - call $~lib/rt/common/__typeinfo + call $~lib/rt/__typeinfo i32.const 8 i32.and i32.eqz @@ -10856,7 +2146,7 @@ i32.eqz if local.get $0 - call $~lib/rt/purerc/appendRoot + call $~lib/rt/pure/appendRoot end else local.get $0 @@ -10873,23 +2163,172 @@ end end ) - (func $~lib/rt/purerc/__retainRelease (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/map/Map#clear (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash8 (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const -2128831035 + local.get $0 + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_s + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/rt/pure/__retainRelease (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 i32.ne if - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end local.get $1 local.get $2 i32.gt_u @@ -10897,23 +2336,8554 @@ local.get $1 i32.const 16 i32.sub - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/increment + end + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement end end - local.get $0 + local.get $1 ) - (func $~lib/rt/purerc/__release (; 131 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.gt_u if local.get $0 i32.const 16 i32.sub - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement end ) - (func $~lib/rt/purerc/markGray (; 132 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#rehash (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 12 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load8_s + i32.store8 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load8_s + local.set $11 + local.get $11 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 12 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store8 + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 37 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 12 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load8_u + i32.store8 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load8_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 12 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store8 + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 47 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash16 (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/map/Map#find (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_s + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 12 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_s + i32.store16 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load16_s + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 12 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store16 + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 58 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 59 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 12 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_u + i32.store16 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load16_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 12 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 64 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store16 + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 68 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 65535 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.const 65535 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 65535 + i32.and + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.const 65535 + i32.and + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash32 (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/map/Map#find (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 74 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 12 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 12 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 75 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 79 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 80 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 84 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 12 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 12 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 85 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $3 + local.get $3 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i32.store + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $5 + i32.store + local.get $3 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 89 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/util/hash/hash64 (; 92 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.wrap_i64 + local.set $1 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $2 + i32.const -2128831035 + local.set $3 + local.get $3 + local.get $1 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + ) + (func $~lib/map/Map#find (; 93 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=12 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 94 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i64.load + i64.store + local.get $10 + local.get $9 + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i64.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=12 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 96 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i64.store + local.get $5 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=12 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 97 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=8 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 99 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 100 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i64) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i64.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i64.const 100 + i64.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i64.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i64.const 100 + i64.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i64.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i64.const 50 + i64.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i64.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i64.const 50 + i64.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 101 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 103 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=12 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 104 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 105 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i64.load + i64.store + local.get $10 + local.get $9 + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i64.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=12 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 106 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + i64.store + local.get $5 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=12 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 107 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=8 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 109 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 110 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i64) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + i64.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i64.const 100 + i64.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i64.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + i64.const 100 + i64.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i64.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i64.const 50 + i64.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i64.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i64.const 50 + i64.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 111 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 113 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f32.load + local.get $1 + f32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 114 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 115 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 12 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + f32.load + f32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + f32.load + local.set $11 + local.get $11 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 12 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 116 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 12 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + f32.store + local.get $5 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 117 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=4 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 119 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 120 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 f32) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + f32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + f32.const 100 + f32.lt + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + f32.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + f32.const 100 + f32.lt + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.trunc_f32_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + f32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + f32.const 50 + f32.lt + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + f32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + f32.const 50 + f32.lt + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#clear (; 121 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/map/Map#constructor (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/map/Map#find (; 123 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f64.load + local.get $1 + f64.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=12 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/map/Map#has (; 124 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + ) + (func $~lib/map/Map#rehash (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f64) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + f64.load + f64.store + local.get $10 + local.get $9 + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + f64.load + local.set $11 + local.get $11 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=12 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#set (; 126 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + local.get $3 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + end + block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + f64.store + local.get $5 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + i32.store offset=12 + local.get $7 + local.get $5 + i32.store + local.get $6 + call $~lib/rt/pure/__release + end + ) + (func $~lib/map/Map#get (; 127 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (local $3 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + if (result i32) + local.get $3 + i32.load offset=8 + else + unreachable + end + ) + (func $~lib/map/Map#get:size (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#delete (; 129 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $2 + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/map/Map#rehash + end + i32.const 1 + ) + (func $std/map/testNumeric (; 130 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 f64) + i32.const 0 + call $~lib/map/Map#constructor + local.set $0 + block $break|0 + f64.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + f64.const 100 + f64.lt + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 11 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + f64.const 0 + local.set $1 + loop $repeat|1 + local.get $1 + f64.const 100 + f64.lt + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 20 + local.get $1 + i32.trunc_f64_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + f64.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + f64.const 50 + f64.lt + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + f64.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + f64.const 50 + f64.lt + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + call $~lib/map/Map#set + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $start:std/map (; 131 ;) (type $FUNCSIG$v) + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + ) + (func $start (; 132 ;) (type $FUNCSIG$v) + call $start:std/map + ) + (func $~lib/rt/pure/markGray (; 133 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -10937,10 +10907,10 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 133 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 134 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -10955,9 +10925,9 @@ i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 134 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 135 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -10975,7 +10945,7 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 @@ -10990,11 +10960,11 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 135 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 136 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -11017,17 +10987,17 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 136 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.lt_u if return @@ -11069,7 +11039,7 @@ end block local.get $2 - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement br $break|0 unreachable end @@ -11085,7 +11055,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -11098,7 +11068,7 @@ i32.sub i32.store offset=4 local.get $2 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray br $break|0 unreachable end @@ -11106,7 +11076,7 @@ end block local.get $2 - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan br $break|0 unreachable end @@ -11132,7 +11102,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -11150,7 +11120,7 @@ i32.ne if local.get $2 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack end br $break|0 unreachable @@ -11159,7 +11129,7 @@ end block local.get $2 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite br $break|0 unreachable end @@ -11169,7 +11139,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -11177,163 +11147,163 @@ end end ) - (func $~lib/map/Map#__visit_impl (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 138 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 138 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 139 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 139 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 140 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 140 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 141 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 141 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 142 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 142 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 145 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 145 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 146 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 146 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 147 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit local.get $0 i32.load offset=8 local.set $2 local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit ) - (func $~lib/builtins/__visit_members (; 147 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 148 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$28 - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -11343,7 +11313,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -11355,13 +11337,8 @@ block block local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - end + local.get $1 + call $~lib/map/Map#__visit_impl return unreachable end @@ -11378,7 +11355,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11395,7 +11372,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11412,7 +11389,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11429,7 +11406,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11446,7 +11423,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11463,7 +11440,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11480,7 +11457,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11497,7 +11474,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11514,7 +11491,7 @@ block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return unreachable end @@ -11528,13 +11505,6 @@ end block block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end unreachable unreachable end @@ -11544,6 +11514,6 @@ unreachable end ) - (func $null (; 148 ;) (type $FUNCSIG$v) + (func $null (; 149 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index c767c1ac..b58f8cbe 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -60,11 +60,11 @@ (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) (memory $0 1) - (data (i32.const 8) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 48) " \00\00\00\01\00\00\00\0f\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 96) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00@\00\00\00@\00\00\00 \00\00\00\04") - (data (i32.const 128) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 168) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 48) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data (i32.const 96) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00@\00\00\00@\00\00\00 \00\00\00\04") + (data (i32.const 128) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.") (global $~lib/math/rempio2f_y (mut f64) (f64.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 48ca0ad9..877cd7e2 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -62,11 +62,11 @@ (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) (memory $0 1) - (data (i32.const 8) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 48) " \00\00\00\01\00\00\00\0f\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") - (data (i32.const 96) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00@\00\00\00@\00\00\00 \00\00\00\04\00\00\00") - (data (i32.const 128) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 168) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.\00") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00") + (data (i32.const 48) " \00\00\00\01\00\00\00\00\00\00\00 \00\00\00)\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") + (data (i32.const 96) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00@\00\00\00@\00\00\00 \00\00\00\04\00\00\00") + (data (i32.const 128) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") + (data (i32.const 168) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/math/js i32 (i32.const 1)) diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index ab50eff2..ba92e95a 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -10,7 +10,7 @@ (import "math" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") (export "memory" (memory $0)) (export "mod" (func $std/mod/mod)) (start $start) diff --git a/tests/compiler/std/mod.untouched.wat b/tests/compiler/std/mod.untouched.wat index 710fc46e..87efdde6 100644 --- a/tests/compiler/std/mod.untouched.wat +++ b/tests/compiler/std/mod.untouched.wat @@ -12,7 +12,7 @@ (import "math" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s\00") + (data (i32.const 8) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/mod/js i32 (i32.const 1)) diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index d7b579f7..7d447290 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1,53 +1,24 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$i (func (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 64) "\10\00\00\00\1e") - (data (i32.const 80) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 112) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (memory $0 0) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/new/aClass (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select + i32.const 23 i32.add - i32.const 7 - i32.add - i32.const -8 + i32.const -16 i32.and local.tee $0 current_memory @@ -85,69 +56,21 @@ end end local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 + global.set $~lib/rt/stub/offset local.get $1 i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 264 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store + local.tee $0 + i32.const 3 + i32.store offset=8 local.get $0 - ) - (func $std/new/AClass#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.store offset=12 + local.get $1 + ) + (func $std/new/AClass#constructor (; 1 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + call $~lib/rt/stub/__alloc local.tee $0 i32.const 1 i32.store @@ -165,192 +88,15 @@ f32.store offset=4 local.get $0 ) - (func $~lib/runtime/runtime.instanceof (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 + (func $start (; 2 ;) (type $FUNCSIG$v) i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 112 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 112 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 112 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 112 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 112 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 112 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and - if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 80 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 12 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 80 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 13 ;) (type $FUNCSIG$v) - i32.const 264 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset call $std/new/AClass#constructor global.set $std/new/aClass ) - (func $null (; 14 ;) (type $FUNCSIG$v) + (func $null (; 3 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index f0193317..485ba74a 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -1,91 +1,63 @@ (module (type $FUNCSIG$iif (func (param i32 f32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 64) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 112) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00") + (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/new/AClass.aStaticField (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/new/aClass (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 112)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 264)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 8)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 0 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -95,22 +67,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -119,77 +91,33 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $std/new/AClass#constructor (; 6 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (func $std/new/AClass#constructor (; 2 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 block (result i32) local.get $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -209,223 +137,25 @@ f32.store offset=4 local.get $0 ) - (func $start:std/new (; 7 ;) (type $FUNCSIG$v) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (func $start:std/new (; 3 ;) (type $FUNCSIG$v) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 f32.const 3 call $std/new/AClass#constructor global.set $std/new/aClass ) - (func $~lib/runtime/runtime.instanceof (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 - local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 - ) - (func $~lib/runtime/runtime.retain (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 17 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 80 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 19 ;) (type $FUNCSIG$v) + (func $start (; 4 ;) (type $FUNCSIG$v) call $start:std/new ) - (func $null (; 20 ;) (type $FUNCSIG$v) + (func $null (; 5 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index 811595e0..9585529f 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -1,44 +1,32 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$ii (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16") - (data (i32.const 24) "h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") - (data (i32.const 48) "\10\00\00\00(") - (data (i32.const 64) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 104) "\10\00\00\00*") - (data (i32.const 120) "s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 168) "\14\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00\08") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") + (data (i32.const 48) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -46,20 +34,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -67,16 +55,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -85,71 +73,20 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 336 - i32.le_u - if - i32.const 0 - i32.const 64 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 i32.const 16 i32.sub local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 64 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 - i32.store + i32.store offset=8 + local.get $2 local.get $0 + i32.store offset=12 + local.get $3 ) - (func $~lib/util/string/compareImpl (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/compareImpl (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 24 @@ -185,7 +122,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.__eq (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 24 @@ -194,44 +131,42 @@ i32.const 1 return end + block $folding-inner0 + i32.const 0 + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 20 + i32.load + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + call $~lib/util/string/compareImpl + i32.eqz + return + end i32.const 0 - i32.const 1 - local.get $0 - select - if - i32.const 0 - return - end - local.get $0 - i32.const 16 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $1 - i32.const 12 - i32.load - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - call $~lib/util/string/compareImpl - i32.eqz ) - (func $std/object-literal/bar (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/bar (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 1 i32.ne if i32.const 0 - i32.const 120 - i32.const 9 + i32.const 64 + i32.const 7 i32.const 2 call $~lib/builtins/abort unreachable @@ -242,23 +177,22 @@ i32.eqz if i32.const 0 - i32.const 120 - i32.const 10 + i32.const 64 + i32.const 8 i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $start:std/object-literal (; 7 ;) (type $FUNCSIG$v) + (func $start:std/object-literal (; 5 ;) (type $FUNCSIG$v) (local $0 i32) - i32.const 336 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 112 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc local.tee $0 i32.const 1 i32.store @@ -268,9 +202,8 @@ local.get $0 call $std/object-literal/bar i32.const 4 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc local.tee $0 i32.const 2 i32.store @@ -280,16 +213,15 @@ i32.ne if i32.const 0 - i32.const 120 - i32.const 26 + i32.const 64 + i32.const 24 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 4 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc local.tee $0 i32.const 3 i32.store @@ -299,188 +231,17 @@ i32.ne if i32.const 0 - i32.const 120 - i32.const 21 + i32.const 64 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 168 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 168 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 168 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 168 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - if (result i32) - local.get $2 - i32.const 168 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $2 - i32.const 3 - i32.shl - i32.const 168 - i32.add - i32.load - end - local.tee $0 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $3 - local.get $2 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $2 - i32.load - drop - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $3 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $0 - i32.const 1024 - i32.and - if - local.get $1 - local.get $3 - i32.add - local.set $0 - loop $continue|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $1 - i32.load - drop - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $2 - ) - (func $~lib/runtime/runtime.retain (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 15 ;) (type $FUNCSIG$v) - nop - ) - (func $start (; 16 ;) (type $FUNCSIG$v) + (func $start (; 6 ;) (type $FUNCSIG$v) call $start:std/object-literal - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 20 - call $~lib/util/runtime/register - global.set $~lib/runtime/ROOT + ) + (func $null (; 7 ;) (type $FUNCSIG$v) + nop ) ) diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index b71be618..99d5e8e5 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -1,92 +1,66 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00") - (data (i32.const 48) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 104) "\10\00\00\00*\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 168) "\14\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00") + (data (i32.const 48) "*\00\00\00\01\00\00\00\01\00\00\00*\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 168)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 336)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 108)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -96,22 +70,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -120,90 +94,45 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 + i32.sub + local.set $8 + local.get $8 local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 i32.store offset=8 - local.get $1 - i32.const 0 + local.get $8 + local.get $0 i32.store offset=12 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add + local.get $2 ) - (func $~lib/collector/dummy/__ref_register (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/util/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - call $~lib/collector/dummy/__ref_register - local.get $0 - ) - (func $~lib/string/String#get:length (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 8 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiiiii) (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.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop i32.const 0 local.set $5 local.get $0 @@ -233,33 +162,50 @@ i32.const 0 end if - block - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 br $continue|0 end end end local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/string/String.__eq (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop 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 @@ -274,28 +220,49 @@ 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 $2 - local.get $2 + local.set $3 + local.get $3 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.get $1 + call $~lib/rt/stub/__release + local.get $2 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 + local.get $3 call $~lib/util/string/compareImpl i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/object-literal/bar (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/bar (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load i32.const 1 @@ -303,8 +270,8 @@ i32.eqz if i32.const 0 - i32.const 120 - i32.const 9 + i32.const 64 + i32.const 7 i32.const 2 call $~lib/builtins/abort unreachable @@ -316,14 +283,19 @@ i32.eqz if i32.const 0 - i32.const 120 - i32.const 10 + i32.const 64 + i32.const 8 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release ) - (func $std/object-literal/bar2 (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/bar2 (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load i32.const 2 @@ -331,14 +303,16 @@ i32.eqz if i32.const 0 - i32.const 120 - i32.const 26 + i32.const 64 + i32.const 24 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release ) - (func $std/object-literal/Foo2#test (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/object-literal/Foo2#test (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load i32.const 3 @@ -346,32 +320,32 @@ i32.eqz if i32.const 0 - i32.const 120 - i32.const 21 + i32.const 64 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable end ) - (func $start:std/object-literal (; 13 ;) (type $FUNCSIG$v) + (func $start:std/object-literal (; 10 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset block (result i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 local.get $0 i32.const 1 @@ -384,9 +358,9 @@ call $std/object-literal/bar block (result i32) i32.const 4 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $1 local.get $1 i32.const 2 @@ -396,9 +370,9 @@ call $std/object-literal/bar2 block (result i32) i32.const 4 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $2 local.get $2 i32.const 3 @@ -406,244 +380,16 @@ local.get $2 end call $std/object-literal/Foo2#test - ) - (func $~lib/runtime/runtime.instanceof (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 + call $~lib/rt/stub/__release ) - (func $~lib/runtime/runtime.flags (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/collector/dummy/__ref_link (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/collector/dummy/__ref_unlink (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/runtime/runtime.newArray (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.tee $6 - local.get $1 - local.tee $7 - local.get $6 - i32.load - local.tee $8 - i32.ne - if (result i32) - local.get $8 - if - local.get $8 - local.get $6 - call $~lib/collector/dummy/__ref_unlink - end - local.get $7 - local.get $6 - call $~lib/collector/dummy/__ref_link - local.get $7 - else - local.get $7 - end - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $8 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $7 - local.get $7 - if - local.get $7 - local.get $5 - call $~lib/collector/dummy/__ref_link - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 - ) - (func $~lib/runtime/Root#constructor (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 20 - call $~lib/util/runtime/register - local.set $0 - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $~lib/collector/dummy/__ref_link - ) - (func $~lib/runtime/runtime.release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $~lib/collector/dummy/__ref_unlink - ) - (func $~lib/collector/dummy/__ref_collect (; 26 ;) (type $FUNCSIG$v) - nop - ) - (func $~lib/runtime/runtime.collect (; 27 ;) (type $FUNCSIG$v) - call $~lib/collector/dummy/__ref_collect - ) - (func $~lib/runtime/runtime#constructor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 29 ;) (type $FUNCSIG$v) + (func $start (; 11 ;) (type $FUNCSIG$v) call $start:std/object-literal - i32.const 0 - call $~lib/runtime/Root#constructor - global.set $~lib/runtime/ROOT ) - (func $null (; 30 ;) (type $FUNCSIG$v) + (func $null (; 12 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 780ebff7..a431b3ec 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,22 +1,15 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00(") - (data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 64) "\10\00\00\006") - (data (i32.const 80) "s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (data (i32.const 136) "\10\00\00\00\1e") - (data (i32.const 152) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 184) "\14\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (data (i32.const 8) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) (global $std/operator-overloading/a (mut i32) (i32.const 0)) @@ -84,49 +77,30 @@ (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset - local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select + (local $4 i32) + global.get $~lib/rt/stub/offset + i32.const 16 i32.add - i32.const 7 - i32.add - i32.const -8 - i32.and - local.tee $0 - current_memory local.tee $2 + i32.const 23 + i32.add + i32.const -16 + i32.and + local.tee $1 + current_memory + local.tee $3 i32.const 16 i32.shl i32.gt_u if - local.get $2 - local.get $0 + local.get $3 local.get $1 + local.get $2 i32.sub i32.const 65535 i32.add @@ -134,16 +108,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 + local.tee $4 local.get $3 + local.get $4 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $4 grow_memory i32.const 0 i32.lt_s @@ -152,70 +126,23 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate local.tee $1 - i32.const -1520547049 - i32.store + local.get $0 + i32.store offset=8 local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 352 - i32.le_u - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - ) - (func $std/operator-overloading/Tester#constructor (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.store offset=12 + local.get $2 + ) + (func $std/operator-overloading/Tester#constructor (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + i32.const 3 + call $~lib/rt/stub/__alloc local.tee $2 local.get $0 i32.store @@ -224,7 +151,7 @@ i32.store offset=4 local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 5 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 3 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) local.get $1 i32.const 1023 i32.gt_s @@ -301,7 +228,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/math/NativeMath.pow (; 6 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 4 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) (local $4 i32) @@ -1221,7 +1148,7 @@ f64.const 1e-300 f64.mul ) - (func $std/operator-overloading/Tester.pow (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.pow (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load f64.convert_i32_s @@ -1240,12 +1167,10 @@ i32.trunc_f64_s call $std/operator-overloading/Tester#constructor ) - (func $std/operator-overloading/TesterInlineStatic#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/TesterInlineStatic#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 8 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc local.tee $2 local.get $0 i32.store @@ -1254,12 +1179,10 @@ i32.store offset=4 local.get $2 ) - (func $std/operator-overloading/TesterInlineInstance#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/TesterInlineInstance#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 8 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc local.tee $2 local.get $0 i32.store @@ -1268,13 +1191,13 @@ i32.store offset=4 local.get $2 ) - (func $start:std/operator-overloading (; 10 ;) (type $FUNCSIG$v) + (func $start:std/operator-overloading (; 8 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 352 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 80 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 1 i32.const 2 call $std/operator-overloading/Tester#constructor @@ -1312,7 +1235,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 145 i32.const 0 call $~lib/builtins/abort @@ -1353,7 +1276,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 151 i32.const 0 call $~lib/builtins/abort @@ -1396,7 +1319,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 157 i32.const 0 call $~lib/builtins/abort @@ -1439,7 +1362,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 163 i32.const 0 call $~lib/builtins/abort @@ -1481,7 +1404,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 169 i32.const 0 call $~lib/builtins/abort @@ -1514,7 +1437,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 175 i32.const 0 call $~lib/builtins/abort @@ -1557,7 +1480,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 181 i32.const 0 call $~lib/builtins/abort @@ -1600,7 +1523,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 187 i32.const 0 call $~lib/builtins/abort @@ -1643,7 +1566,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 193 i32.const 0 call $~lib/builtins/abort @@ -1679,7 +1602,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 199 i32.const 0 call $~lib/builtins/abort @@ -1713,7 +1636,7 @@ global.get $std/operator-overloading/eqf if i32.const 0 - i32.const 80 + i32.const 24 i32.const 205 i32.const 0 call $~lib/builtins/abort @@ -1739,7 +1662,7 @@ global.get $std/operator-overloading/eq if i32.const 0 - i32.const 80 + i32.const 24 i32.const 209 i32.const 0 call $~lib/builtins/abort @@ -1767,7 +1690,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 213 i32.const 0 call $~lib/builtins/abort @@ -1803,7 +1726,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 219 i32.const 0 call $~lib/builtins/abort @@ -1839,7 +1762,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 225 i32.const 0 call $~lib/builtins/abort @@ -1875,7 +1798,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 231 i32.const 0 call $~lib/builtins/abort @@ -1911,7 +1834,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 237 i32.const 0 call $~lib/builtins/abort @@ -1947,7 +1870,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 242 i32.const 0 call $~lib/builtins/abort @@ -1983,7 +1906,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 247 i32.const 0 call $~lib/builtins/abort @@ -2019,7 +1942,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 252 i32.const 0 call $~lib/builtins/abort @@ -2053,7 +1976,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 257 i32.const 0 call $~lib/builtins/abort @@ -2095,7 +2018,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 262 i32.const 0 call $~lib/builtins/abort @@ -2137,7 +2060,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 267 i32.const 0 call $~lib/builtins/abort @@ -2171,7 +2094,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 272 i32.const 0 call $~lib/builtins/abort @@ -2182,7 +2105,7 @@ i32.ne if i32.const 0 - i32.const 80 + i32.const 24 i32.const 273 i32.const 0 call $~lib/builtins/abort @@ -2222,7 +2145,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 279 i32.const 0 call $~lib/builtins/abort @@ -2256,7 +2179,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 282 i32.const 0 call $~lib/builtins/abort @@ -2292,7 +2215,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 287 i32.const 0 call $~lib/builtins/abort @@ -2313,7 +2236,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 288 i32.const 0 call $~lib/builtins/abort @@ -2347,7 +2270,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 291 i32.const 0 call $~lib/builtins/abort @@ -2366,7 +2289,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 292 i32.const 0 call $~lib/builtins/abort @@ -2420,7 +2343,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 312 i32.const 0 call $~lib/builtins/abort @@ -2474,194 +2397,17 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 332 i32.const 0 call $~lib/builtins/abort unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 184 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 184 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 184 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 184 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 184 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 184 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and - if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 152 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 18 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 152 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 19 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) call $start:std/operator-overloading ) - (func $null (; 20 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index ddfe2fee..dad5cf0c 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -1,25 +1,19 @@ (module (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 64) "\10\00\00\006\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 136) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 184) "\14\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00") + (data (i32.const 8) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/operator-overloading/a1 (mut i32) (i32.const 0)) (global $std/operator-overloading/a2 (mut i32) (i32.const 0)) (global $std/operator-overloading/a (mut i32) (i32.const 0)) @@ -87,73 +81,54 @@ (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 184)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 352)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 80)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -163,22 +138,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -187,75 +162,31 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 + local.get $0 + i32.store offset=12 + local.get $2 + ) + (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 ) - (func $std/operator-overloading/Tester#constructor (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/Tester#constructor (; 3 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -266,7 +197,17 @@ i32.store offset=4 local.get $0 ) - (func $std/operator-overloading/Tester.add (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $std/operator-overloading/Tester.add (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -279,8 +220,21 @@ i32.load offset=4 i32.add call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.sub (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.sub (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -293,8 +247,21 @@ i32.load offset=4 i32.sub call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.mul (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.mul (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -307,8 +274,21 @@ i32.load offset=4 i32.mul call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.div (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.div (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -321,8 +301,21 @@ i32.load offset=4 i32.div_s call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.mod (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.mod (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -335,8 +328,14 @@ i32.load offset=4 i32.rem_s call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/math/NativeMath.scalbn (; 12 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) + (func $~lib/math/NativeMath.scalbn (; 10 ;) (type $FUNCSIG$ddi) (param $0 f64) (param $1 i32) (result f64) (local $2 f64) (local $3 i32) (local $4 i32) @@ -427,7 +426,7 @@ f64.reinterpret_i64 f64.mul ) - (func $~lib/math/NativeMath.pow (; 13 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.pow (; 11 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i32) (local $4 i32) @@ -1508,7 +1507,14 @@ local.get $16 f64.mul ) - (func $std/operator-overloading/Tester.pow (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.pow (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1527,8 +1533,21 @@ call $~lib/math/NativeMath.pow i32.trunc_f64_s call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.and (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.and (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1541,8 +1560,21 @@ i32.load offset=4 i32.and call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.or (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.or (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1555,8 +1587,21 @@ i32.load offset=4 i32.or call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.xor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.xor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1569,8 +1614,21 @@ i32.load offset=4 i32.xor call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.equals (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.equals (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load local.get $1 @@ -1585,8 +1643,21 @@ else i32.const 0 end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.notEquals (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.notEquals (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load local.get $1 @@ -1601,8 +1672,21 @@ else i32.const 0 end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.greater (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.greater (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load local.get $1 @@ -1617,8 +1701,21 @@ else i32.const 0 end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.greaterEquals (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.greaterEquals (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load local.get $1 @@ -1633,8 +1730,21 @@ else i32.const 0 end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.less (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.less (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load local.get $1 @@ -1649,8 +1759,21 @@ else i32.const 0 end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.lessEquals (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.lessEquals (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load local.get $1 @@ -1665,8 +1788,18 @@ else i32.const 0 end + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.shr (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shr (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1677,8 +1810,16 @@ local.get $1 i32.shr_s call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.shu (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shu (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1689,8 +1830,16 @@ local.get $1 i32.shr_u call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.shl (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/operator-overloading/Tester.shl (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1701,16 +1850,35 @@ local.get $1 i32.shl call $std/operator-overloading/Tester#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 ) - (func $std/operator-overloading/Tester.pos (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retainRelease (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $std/operator-overloading/Tester.pos (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load local.get $0 i32.load offset=4 call $std/operator-overloading/Tester#constructor + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $std/operator-overloading/Tester.neg (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.neg (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const 0 i32.const 0 local.get $0 @@ -1721,8 +1889,16 @@ i32.load offset=4 i32.sub call $std/operator-overloading/Tester#constructor + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $std/operator-overloading/Tester.not (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.not (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const 0 local.get $0 i32.load @@ -1733,8 +1909,16 @@ i32.const -1 i32.xor call $std/operator-overloading/Tester#constructor + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $std/operator-overloading/Tester.excl (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester.excl (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load i32.eqz @@ -1745,8 +1929,12 @@ else i32.const 0 end + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) - (func $std/operator-overloading/Tester#inc (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#inc (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 local.get $0 i32.load @@ -1760,8 +1948,9 @@ i32.add i32.store offset=4 local.get $0 + call $~lib/rt/stub/__retain ) - (func $std/operator-overloading/Tester#dec (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/operator-overloading/Tester#dec (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 local.get $0 i32.load @@ -1775,6 +1964,10 @@ i32.sub i32.store offset=4 local.get $0 + call $~lib/rt/stub/__retain + ) + (func $~lib/rt/stub/__skippedRelease (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 ) (func $std/operator-overloading/Tester#postInc (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 @@ -1805,9 +1998,9 @@ i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -1818,14 +2011,61 @@ i32.store offset=4 local.get $0 ) - (func $std/operator-overloading/TesterInlineInstance#constructor (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/operator-overloading/TesterInlineStatic.postInc (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + i32.load + i32.const 1 + i32.add + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + ) + (func $std/operator-overloading/TesterInlineStatic.add (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.add + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.add + call $std/operator-overloading/TesterInlineStatic#constructor + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $std/operator-overloading/TesterInlineInstance#constructor (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz if i32.const 8 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -1836,19 +2076,74 @@ i32.store offset=4 local.get $0 ) - (func $start:std/operator-overloading (; 37 ;) (type $FUNCSIG$v) + (func $std/operator-overloading/TesterInlineInstance#postInc (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + i32.const 1 + i32.add + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + ) + (func $std/operator-overloading/TesterInlineInstance#add (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.add + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.add + call $std/operator-overloading/TesterInlineInstance#constructor + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $start:std/operator-overloading (; 41 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - global.get $~lib/memory/HEAP_BASE - i32.const 7 + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 0 i32.const 1 i32.const 2 @@ -1862,6 +2157,8 @@ global.get $std/operator-overloading/a1 global.get $std/operator-overloading/a2 call $std/operator-overloading/Tester.add + local.tee $0 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/a global.get $std/operator-overloading/a i32.load @@ -1878,7 +2175,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 145 i32.const 0 call $~lib/builtins/abort @@ -1897,6 +2194,8 @@ global.get $std/operator-overloading/s1 global.get $std/operator-overloading/s2 call $std/operator-overloading/Tester.sub + local.tee $1 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/s global.get $std/operator-overloading/s i32.load @@ -1913,7 +2212,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 151 i32.const 0 call $~lib/builtins/abort @@ -1932,6 +2231,8 @@ global.get $std/operator-overloading/m1 global.get $std/operator-overloading/m2 call $std/operator-overloading/Tester.mul + local.tee $2 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/m global.get $std/operator-overloading/m i32.load @@ -1948,7 +2249,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 157 i32.const 0 call $~lib/builtins/abort @@ -1967,6 +2268,8 @@ global.get $std/operator-overloading/d1 global.get $std/operator-overloading/d2 call $std/operator-overloading/Tester.div + local.tee $3 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/d global.get $std/operator-overloading/d i32.load @@ -1983,7 +2286,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 163 i32.const 0 call $~lib/builtins/abort @@ -2002,6 +2305,8 @@ global.get $std/operator-overloading/f1 global.get $std/operator-overloading/f2 call $std/operator-overloading/Tester.mod + local.tee $4 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/f global.get $std/operator-overloading/f i32.load @@ -2018,7 +2323,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 169 i32.const 0 call $~lib/builtins/abort @@ -2037,6 +2342,8 @@ global.get $std/operator-overloading/p1 global.get $std/operator-overloading/p2 call $std/operator-overloading/Tester.pow + local.tee $5 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/p global.get $std/operator-overloading/p i32.load @@ -2053,7 +2360,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 175 i32.const 0 call $~lib/builtins/abort @@ -2072,6 +2379,8 @@ global.get $std/operator-overloading/n1 global.get $std/operator-overloading/n2 call $std/operator-overloading/Tester.and + local.tee $6 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/n global.get $std/operator-overloading/n i32.load @@ -2088,7 +2397,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 181 i32.const 0 call $~lib/builtins/abort @@ -2107,6 +2416,8 @@ global.get $std/operator-overloading/o1 global.get $std/operator-overloading/o2 call $std/operator-overloading/Tester.or + local.tee $7 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/o global.get $std/operator-overloading/o i32.load @@ -2123,7 +2434,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 187 i32.const 0 call $~lib/builtins/abort @@ -2142,6 +2453,8 @@ global.get $std/operator-overloading/x1 global.get $std/operator-overloading/x2 call $std/operator-overloading/Tester.xor + local.tee $8 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/x global.get $std/operator-overloading/x i32.load @@ -2158,7 +2471,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 193 i32.const 0 call $~lib/builtins/abort @@ -2184,7 +2497,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 199 i32.const 0 call $~lib/builtins/abort @@ -2210,7 +2523,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 205 i32.const 0 call $~lib/builtins/abort @@ -2226,7 +2539,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 209 i32.const 0 call $~lib/builtins/abort @@ -2242,7 +2555,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 213 i32.const 0 call $~lib/builtins/abort @@ -2268,7 +2581,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 219 i32.const 0 call $~lib/builtins/abort @@ -2294,7 +2607,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 225 i32.const 0 call $~lib/builtins/abort @@ -2320,7 +2633,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 231 i32.const 0 call $~lib/builtins/abort @@ -2346,7 +2659,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 237 i32.const 0 call $~lib/builtins/abort @@ -2360,6 +2673,8 @@ global.get $std/operator-overloading/shr i32.const 3 call $std/operator-overloading/Tester.shr + local.tee $9 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/sres global.get $std/operator-overloading/sres i32.load @@ -2376,7 +2691,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 242 i32.const 0 call $~lib/builtins/abort @@ -2390,6 +2705,8 @@ global.get $std/operator-overloading/shu i32.const 3 call $std/operator-overloading/Tester.shu + local.tee $10 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/ures global.get $std/operator-overloading/ures i32.load @@ -2406,7 +2723,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 247 i32.const 0 call $~lib/builtins/abort @@ -2417,9 +2734,12 @@ i32.const 2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shl + global.get $std/operator-overloading/sres global.get $std/operator-overloading/shl i32.const 3 call $std/operator-overloading/Tester.shl + local.tee $11 + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/sres global.get $std/operator-overloading/sres i32.load @@ -2436,7 +2756,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 252 i32.const 0 call $~lib/builtins/abort @@ -2449,6 +2769,8 @@ global.set $std/operator-overloading/pos global.get $std/operator-overloading/pos call $std/operator-overloading/Tester.pos + local.tee $12 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/pres global.get $std/operator-overloading/pres i32.load @@ -2467,7 +2789,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 257 i32.const 0 call $~lib/builtins/abort @@ -2480,6 +2802,8 @@ global.set $std/operator-overloading/neg global.get $std/operator-overloading/neg call $std/operator-overloading/Tester.neg + local.tee $13 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/nres global.get $std/operator-overloading/nres i32.load @@ -2502,7 +2826,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 262 i32.const 0 call $~lib/builtins/abort @@ -2515,6 +2839,8 @@ global.set $std/operator-overloading/not global.get $std/operator-overloading/not call $std/operator-overloading/Tester.not + local.tee $14 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/res global.get $std/operator-overloading/res i32.load @@ -2537,7 +2863,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 267 i32.const 0 call $~lib/builtins/abort @@ -2566,7 +2892,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 272 i32.const 0 call $~lib/builtins/abort @@ -2578,7 +2904,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 273 i32.const 0 call $~lib/builtins/abort @@ -2590,7 +2916,10 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec call $std/operator-overloading/Tester#inc + local.tee $15 + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec i32.load @@ -2607,14 +2936,17 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 279 i32.const 0 call $~lib/builtins/abort unreachable end global.get $std/operator-overloading/incdec + global.get $std/operator-overloading/incdec call $std/operator-overloading/Tester#dec + local.tee $16 + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec i32.load @@ -2631,24 +2963,30 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 282 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/operator-overloading/incdec i32.const 0 i32.const 0 i32.const 1 call $std/operator-overloading/Tester#constructor + call $~lib/rt/stub/__skippedRelease global.set $std/operator-overloading/incdec block (result i32) global.get $std/operator-overloading/incdec - local.tee $0 + global.get $std/operator-overloading/incdec + local.tee $17 call $std/operator-overloading/Tester#postInc + local.tee $18 + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/incdec - local.get $0 + local.get $17 end + call $~lib/rt/stub/__retain global.set $std/operator-overloading/tmp global.get $std/operator-overloading/tmp i32.load @@ -2665,7 +3003,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 287 i32.const 0 call $~lib/builtins/abort @@ -2686,19 +3024,24 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 288 i32.const 0 call $~lib/builtins/abort unreachable end + global.get $std/operator-overloading/tmp block (result i32) global.get $std/operator-overloading/incdec - local.tee $0 + global.get $std/operator-overloading/incdec + local.tee $17 call $std/operator-overloading/Tester#postDec + local.tee $19 + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/incdec - local.get $0 + local.get $17 end + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/tmp global.get $std/operator-overloading/tmp i32.load @@ -2715,7 +3058,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 291 i32.const 0 call $~lib/builtins/abort @@ -2736,7 +3079,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 292 i32.const 0 call $~lib/builtins/abort @@ -2747,44 +3090,22 @@ i32.const 2 call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais1 - block $std/operator-overloading/TesterInlineStatic.postInc|inlined.0 (result i32) - global.get $std/operator-overloading/ais1 - local.set $0 - i32.const 0 - local.get $0 - i32.load - i32.const 1 - i32.add - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - end + global.get $std/operator-overloading/ais1 + global.get $std/operator-overloading/ais1 + call $std/operator-overloading/TesterInlineStatic.postInc + local.tee $17 + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/ais1 i32.const 0 i32.const 2 i32.const 3 call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais2 - block $std/operator-overloading/TesterInlineStatic.add|inlined.0 (result i32) - global.get $std/operator-overloading/ais1 - local.set $1 - global.get $std/operator-overloading/ais2 - local.set $0 - i32.const 0 - local.get $1 - i32.load - local.get $0 - i32.load - i32.add - local.get $1 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineStatic#constructor - end + global.get $std/operator-overloading/ais1 + global.get $std/operator-overloading/ais2 + call $std/operator-overloading/TesterInlineStatic.add + local.tee $20 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/ais global.get $std/operator-overloading/ais i32.load @@ -2801,7 +3122,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 312 i32.const 0 call $~lib/builtins/abort @@ -2812,44 +3133,22 @@ i32.const 2 call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii1 - block $std/operator-overloading/TesterInlineInstance#postInc|inlined.0 (result i32) - global.get $std/operator-overloading/aii1 - local.set $0 - i32.const 0 - local.get $0 - i32.load - i32.const 1 - i32.add - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - end + global.get $std/operator-overloading/aii1 + global.get $std/operator-overloading/aii1 + call $std/operator-overloading/TesterInlineInstance#postInc + local.tee $21 + call $~lib/rt/stub/__retainRelease global.set $std/operator-overloading/aii1 i32.const 0 i32.const 2 i32.const 3 call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii2 - block $std/operator-overloading/TesterInlineInstance#add|inlined.0 (result i32) - global.get $std/operator-overloading/aii1 - local.set $1 - global.get $std/operator-overloading/aii2 - local.set $0 - i32.const 0 - local.get $1 - i32.load - local.get $0 - i32.load - i32.add - local.get $1 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.add - call $std/operator-overloading/TesterInlineInstance#constructor - end + global.get $std/operator-overloading/aii1 + global.get $std/operator-overloading/aii2 + call $std/operator-overloading/TesterInlineInstance#add + local.tee $22 + call $~lib/rt/stub/__retain global.set $std/operator-overloading/aii global.get $std/operator-overloading/aii i32.load @@ -2866,214 +3165,62 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 24 i32.const 332 i32.const 0 call $~lib/builtins/abort unreachable end - ) - (func $~lib/runtime/runtime.instanceof (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 + call $~lib/rt/stub/__release local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 152 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $11 + call $~lib/rt/stub/__release + local.get $12 + call $~lib/rt/stub/__release + local.get $13 + call $~lib/rt/stub/__release + local.get $14 + call $~lib/rt/stub/__release + local.get $15 + call $~lib/rt/stub/__release + local.get $16 + call $~lib/rt/stub/__release + local.get $17 + call $~lib/rt/stub/__release + local.get $18 + call $~lib/rt/stub/__release + local.get $19 + call $~lib/rt/stub/__release + local.get $20 + call $~lib/rt/stub/__release + local.get $21 + call $~lib/rt/stub/__release + local.get $22 + call $~lib/rt/stub/__release ) - (func $~lib/runtime/runtime.retain (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 46 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 47 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 152 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 49 ;) (type $FUNCSIG$v) + (func $start (; 42 ;) (type $FUNCSIG$v) call $start:std/operator-overloading ) - (func $null (; 50 ;) (type $FUNCSIG$v) + (func $null (; 43 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index e7fba8fb..5d6337a8 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -5,8 +5,7 @@ (type $FUNCSIG$vii (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1c") - (data (i32.const 24) "s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (mut i32) (i32.const 0)) (global $std/pointer/add (mut i32) (i32.const 0)) @@ -63,9 +62,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 8 - local.set $2 block $~lib/util/memory/memmove|inlined.0 + i32.const 8 + local.set $2 local.get $0 local.get $1 i32.eq @@ -337,12 +336,12 @@ global.get $std/pointer/one i32.const 8 i32.add - local.tee $0 global.set $std/pointer/one - local.get $0 + global.get $std/pointer/one + local.tee $0 global.set $std/pointer/nextOne global.get $std/pointer/nextOne - global.get $std/pointer/one + local.get $0 i32.ne if i32.const 0 @@ -467,14 +466,15 @@ i32.const 0 global.set $std/pointer/buf global.get $std/pointer/buf + local.tee $0 f32.const 1.100000023841858 f32.store - global.get $std/pointer/buf + local.get $0 i32.const 4 i32.add f32.const 1.2000000476837158 f32.store - global.get $std/pointer/buf + local.get $0 f32.load f32.const 1.100000023841858 f32.ne @@ -595,9 +595,10 @@ unreachable end global.get $std/pointer/buf + local.tee $0 f32.const 1.399999976158142 f32.store - global.get $std/pointer/buf + local.get $0 f32.load f32.const 1.399999976158142 f32.ne diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index 4e11a239..1655c8e8 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -1,5 +1,8 @@ (module + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$viif (func (param i32 i32 f32))) @@ -7,7 +10,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/pointer/one (mut i32) (i32.const 0)) @@ -18,349 +21,407 @@ (global $std/pointer/buf (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/memory/memory.fill (; 1 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $std/pointer/Pointer#add (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.add + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $std/pointer/Pointer#sub (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.sub + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $std/pointer/Pointer#inc (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 8 + i32.add + call $~lib/rt/stub/__retain + ) + (func $~lib/rt/stub/__retainRelease (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $std/pointer/Pointer#dec (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 8 + i32.sub + call $~lib/rt/stub/__retain + ) + (func $~lib/memory/memory.fill (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 local.get $2 + local.set $3 + local.get $3 i32.eqz if br $~lib/util/memory/memset|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 1 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 2 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 1 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 + local.get $5 i32.const 2 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 2 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 3 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 6 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 3 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end i32.const 0 - local.get $0 + local.get $5 i32.sub i32.const 3 i32.and - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -4 i32.and - local.set $2 + local.set $3 i32.const -1 i32.const 255 i32.div_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.mul - local.set $4 - local.get $0 - local.get $4 + local.set $7 + local.get $5 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 4 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 8 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 12 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 8 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 24 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 12 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 16 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 20 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 24 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 28 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 24 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 20 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 16 i32.sub - local.get $4 + local.get $7 i32.store i32.const 24 - local.get $0 + local.get $5 i32.const 4 i32.and i32.add - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $4 + local.set $3 + local.get $7 i64.extend_i32_u - local.get $4 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $6 + local.set $8 block $break|0 loop $continue|0 - local.get $2 + local.get $3 i32.const 32 i32.ge_u if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 br $continue|0 end end end end ) - (func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 br $continue|0 end end end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 br $continue|1 end end @@ -368,95 +429,89 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if - block - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $5 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $5 + local.get $6 end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store br $continue|4 end end @@ -464,16 +519,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -484,7 +539,7 @@ end end ) - (func $std/pointer/Pointer#set:value (; 3 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/pointer/Pointer#set:value (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 i32.const 0 i32.eq @@ -500,7 +555,7 @@ call $~lib/memory/memory.copy end ) - (func $std/pointer/Pointer#set (; 4 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $std/pointer/Pointer#set (; 11 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 local.get $1 i32.const 4 @@ -509,35 +564,49 @@ local.get $2 f32.store ) - (func $std/pointer/Pointer#set:value (; 5 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (func $std/pointer/Pointer#set:value (; 12 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) local.get $0 local.get $1 f32.store ) - (func $start:std/pointer (; 6 ;) (type $FUNCSIG$v) + (func $start:std/pointer (; 13 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f32) block $std/pointer/Pointer#constructor|inlined.0 (result i32) i32.const 0 local.set $1 i32.const 8 local.set $0 local.get $0 + call $~lib/rt/stub/__retain end + local.tee $0 + call $~lib/rt/stub/__retain global.set $std/pointer/one block $std/pointer/Pointer#constructor|inlined.1 (result i32) i32.const 0 - local.set $1 + local.set $2 i32.const 24 - local.set $0 - local.get $0 + local.set $1 + local.get $1 + call $~lib/rt/stub/__retain end + local.tee $1 + call $~lib/rt/stub/__retain global.set $std/pointer/two block $std/pointer/Pointer#get:offset|inlined.0 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $2 + local.get $2 end i32.const 8 i32.eq @@ -552,8 +621,8 @@ end block $std/pointer/Pointer#get:offset|inlined.1 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $2 + local.get $2 end i32.const 24 i32.eq @@ -568,24 +637,24 @@ end block $std/pointer/Pointer#get:value|inlined.0 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $2 + local.get $2 br $std/pointer/Pointer#get:value|inlined.0 end i32.const 1 i32.store block $std/pointer/Pointer#get:value|inlined.1 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $2 + local.get $2 br $std/pointer/Pointer#get:value|inlined.1 end i32.const 2 i32.store offset=4 block $std/pointer/Pointer#get:value|inlined.2 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $2 + local.get $2 br $std/pointer/Pointer#get:value|inlined.2 end i32.load @@ -602,8 +671,8 @@ end block $std/pointer/Pointer#get:value|inlined.3 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $2 + local.get $2 br $std/pointer/Pointer#get:value|inlined.3 end i32.load offset=4 @@ -618,20 +687,16 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#add|inlined.0 (result i32) - global.get $std/pointer/one - local.set $1 - global.get $std/pointer/two - local.set $0 - local.get $1 - local.get $0 - i32.add - end + global.get $std/pointer/one + global.get $std/pointer/two + call $std/pointer/Pointer#add + local.tee $2 + call $~lib/rt/stub/__retain global.set $std/pointer/add block $std/pointer/Pointer#get:offset|inlined.2 (result i32) global.get $std/pointer/add - local.set $0 - local.get $0 + local.set $3 + local.get $3 end i32.const 32 i32.eq @@ -644,20 +709,16 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#sub|inlined.0 (result i32) - global.get $std/pointer/two - local.set $1 - global.get $std/pointer/one - local.set $0 - local.get $1 - local.get $0 - i32.sub - end + global.get $std/pointer/two + global.get $std/pointer/one + call $std/pointer/Pointer#sub + local.tee $3 + call $~lib/rt/stub/__retain global.set $std/pointer/sub block $std/pointer/Pointer#get:offset|inlined.3 (result i32) global.get $std/pointer/sub - local.set $0 - local.get $0 + local.set $4 + local.get $4 end i32.const 16 i32.eq @@ -672,8 +733,8 @@ end block $std/pointer/Pointer#get:offset|inlined.4 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $4 + local.get $4 end i32.const 8 i32.eq @@ -687,17 +748,15 @@ unreachable end block (result i32) - block $std/pointer/Pointer#inc|inlined.0 (result i32) - global.get $std/pointer/one - local.set $0 - local.get $0 - i32.const 8 - i32.add - end - local.tee $0 + global.get $std/pointer/one + global.get $std/pointer/one + call $std/pointer/Pointer#inc + local.tee $4 + call $~lib/rt/stub/__retainRelease global.set $std/pointer/one - local.get $0 + global.get $std/pointer/one end + call $~lib/rt/stub/__retain global.set $std/pointer/nextOne global.get $std/pointer/nextOne global.get $std/pointer/one @@ -713,8 +772,8 @@ end block $std/pointer/Pointer#get:offset|inlined.5 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $5 + local.get $5 end i32.const 16 i32.eq @@ -729,8 +788,8 @@ end block $std/pointer/Pointer#get:offset|inlined.6 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $5 + local.get $5 end i32.const 24 i32.eq @@ -743,26 +802,22 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#dec|inlined.0 (result i32) - global.get $std/pointer/two - local.set $0 - local.get $0 - i32.const 8 - i32.sub - end + global.get $std/pointer/two + global.get $std/pointer/two + call $std/pointer/Pointer#dec + local.tee $5 + call $~lib/rt/stub/__retainRelease global.set $std/pointer/two - block $std/pointer/Pointer#dec|inlined.1 (result i32) - global.get $std/pointer/two - local.set $0 - local.get $0 - i32.const 8 - i32.sub - end + global.get $std/pointer/two + global.get $std/pointer/two + call $std/pointer/Pointer#dec + local.tee $6 + call $~lib/rt/stub/__retainRelease global.set $std/pointer/two block $std/pointer/Pointer#get:offset|inlined.7 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $7 + local.get $7 end i32.const 8 i32.eq @@ -777,8 +832,8 @@ end block $std/pointer/Pointer#get:value|inlined.4 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $7 + local.get $7 br $std/pointer/Pointer#get:value|inlined.4 end i32.load @@ -795,8 +850,8 @@ end block $std/pointer/Pointer#get:value|inlined.5 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $7 + local.get $7 br $std/pointer/Pointer#get:value|inlined.5 end i32.load offset=4 @@ -814,20 +869,20 @@ global.get $std/pointer/one block $std/pointer/Pointer#get:value|inlined.6 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $7 + local.get $7 br $std/pointer/Pointer#get:value|inlined.6 end call $std/pointer/Pointer#set:value block $std/pointer/Pointer#get:offset|inlined.8 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $7 + local.get $7 end block $std/pointer/Pointer#get:offset|inlined.9 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $7 + local.get $7 end i32.ne i32.eqz @@ -841,8 +896,8 @@ end block $std/pointer/Pointer#get:value|inlined.7 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $7 + local.get $7 br $std/pointer/Pointer#get:value|inlined.7 end i32.load @@ -859,8 +914,8 @@ end block $std/pointer/Pointer#get:value|inlined.8 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $7 + local.get $7 br $std/pointer/Pointer#get:value|inlined.8 end i32.load offset=4 @@ -877,11 +932,14 @@ end block $std/pointer/Pointer#constructor|inlined.0 (result i32) i32.const 0 - local.set $1 + local.set $8 i32.const 0 - local.set $0 - local.get $0 + local.set $7 + local.get $7 + call $~lib/rt/stub/__retain end + local.tee $7 + call $~lib/rt/stub/__retain global.set $std/pointer/buf global.get $std/pointer/buf i32.const 0 @@ -893,11 +951,11 @@ call $std/pointer/Pointer#set block $std/pointer/Pointer#get|inlined.0 (result f32) global.get $std/pointer/buf - local.set $1 + local.set $9 i32.const 0 - local.set $0 - local.get $1 - local.get $0 + local.set $8 + local.get $9 + local.get $8 i32.const 4 i32.mul i32.add @@ -916,11 +974,11 @@ end block $std/pointer/Pointer#get|inlined.1 (result f32) global.get $std/pointer/buf - local.set $1 + local.set $9 i32.const 1 - local.set $0 - local.get $1 - local.get $0 + local.set $8 + local.get $9 + local.get $8 i32.const 4 i32.mul i32.add @@ -939,11 +997,11 @@ end block $std/pointer/Pointer#get|inlined.2 (result f32) global.get $std/pointer/buf - local.set $1 + local.set $9 i32.const 0 - local.set $0 - local.get $1 - local.get $0 + local.set $8 + local.get $9 + local.get $8 i32.const 4 i32.mul i32.add @@ -962,11 +1020,11 @@ end block $std/pointer/Pointer#get|inlined.3 (result f32) global.get $std/pointer/buf - local.set $1 + local.set $9 i32.const 1 - local.set $0 - local.get $1 - local.get $0 + local.set $8 + local.get $9 + local.get $8 i32.const 4 i32.mul i32.add @@ -1011,26 +1069,26 @@ end block $std/pointer/Pointer#set|inlined.0 global.get $std/pointer/buf - local.set $1 + local.set $9 i32.const 2 - local.set $0 + local.set $8 f32.const 1.2999999523162842 - local.set $2 - local.get $1 - local.get $0 + local.set $10 + local.get $9 + local.get $8 i32.const 4 i32.mul i32.add - local.get $2 + local.get $10 f32.store end block $std/pointer/Pointer#get|inlined.4 (result f32) global.get $std/pointer/buf - local.set $1 + local.set $9 i32.const 2 - local.set $0 - local.get $1 - local.get $0 + local.set $8 + local.get $9 + local.get $8 i32.const 4 i32.mul i32.add @@ -1049,11 +1107,11 @@ end block $std/pointer/Pointer#get|inlined.5 (result f32) global.get $std/pointer/buf - local.set $1 + local.set $9 i32.const 2 - local.set $0 - local.get $1 - local.get $0 + local.set $8 + local.get $9 + local.get $8 i32.const 4 i32.mul i32.add @@ -1088,8 +1146,8 @@ call $std/pointer/Pointer#set:value block $std/pointer/Pointer#get:value|inlined.0 (result f32) global.get $std/pointer/buf - local.set $0 - local.get $0 + local.set $8 + local.get $8 f32.load br $std/pointer/Pointer#get:value|inlined.0 end @@ -1117,10 +1175,26 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release ) - (func $start (; 7 ;) (type $FUNCSIG$v) + (func $start (; 14 ;) (type $FUNCSIG$v) call $start:std/pointer ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $null (; 15 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/polyfills.optimized.wat b/tests/compiler/std/polyfills.optimized.wat index f983ab5f..cf67499b 100644 --- a/tests/compiler/std/polyfills.optimized.wat +++ b/tests/compiler/std/polyfills.optimized.wat @@ -1,8 +1,7 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\10\00\00\00 ") - (data (i32.const 24) "s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") (export "memory" (memory $0)) (func $start (; 0 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index 20f565de..b6c4f140 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -5,7 +5,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00 \00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00") + (data (i32.const 8) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index bd96d9f0..5cbc2cb8 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1,12 +1,12 @@ (module (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -23,22 +23,1067 @@ (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 56) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 112) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data (i32.const 152) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 256) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 304) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 360) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 400) "\1a\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00*\00\00\00\00\00\00\00*\00\00\00\00\00\00\00J\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 160) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 208) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") + (data (i32.const 400) "\0d\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00*\00\00\00\00\00\00\00*\00\00\00\00\00\00\00J\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 275 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 290 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 3 + i32.and + local.get $2 + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $3 + i32.store + local.get $2 + else + local.get $1 + end + local.set $1 + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 512 + i32.const 0 + i32.store + i32.const 2080 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 512 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 512 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 512 + i32.const 2096 + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 508 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/memory/memory.fill (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -249,21 +1294,21 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741808 i32.gt_u if - i32.const 24 - i32.const 72 + i32.const 176 + i32.const 224 i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 @@ -271,6456 +1316,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load8_s - i32.store8 - local.get $2 - local.get $3 - i32.load8_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=4 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $2 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 13 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 14 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#has (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $7 - i32.ne - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $2 - local.get $3 - i32.load8_u - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=4 - local.get $8 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $2 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 19 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 20 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $8 - i32.ne - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load16_s - i32.store16 - local.get $2 - local.get $3 - i32.load16_s - local.tee $6 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $6 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 24 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $2 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $2 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.tee $2 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 27 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#has (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - local.tee $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $5 - local.set $2 - loop $continue|0 - local.get $3 - local.get $8 - i32.ne - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $3 - i32.load16_u - i32.store16 - local.get $2 - local.get $3 - i32.load16_u - local.tee $6 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $6 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 65535 - i32.and - local.tee $2 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $2 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.tee $2 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 32 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 33 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash32 (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load - local.get $1 - i32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $3 - loop $continue|0 - local.get $2 - local.get $7 - i32.ne - if - local.get $2 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $2 - i32.load - i32.store - local.get $3 - local.get $2 - i32.load - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=4 - local.get $8 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $2 - i32.const 8 - i32.add - local.set $2 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 40 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 41 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $std/set/testNumeric (; 42 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i32.const 100 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i32.const 50 - i32.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 44 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (; 46 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i64.load - local.get $1 - i64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 47 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $3 - loop $continue|0 - local.get $2 - local.get $7 - i32.ne - if - local.get $2 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $2 - i64.load - i64.store - local.get $3 - local.get $2 - i64.load - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $3 - i32.store - local.get $3 - i32.const 16 - i32.add - local.set $3 - end - local.get $2 - i32.const 16 - i32.add - local.set $2 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 49 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 4 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 50 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 51 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i64.const 100 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 52 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $std/set/testNumeric (; 53 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - i64.const 50 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 54 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 55 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f32.load - local.get $1 - f32.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 56 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $3 - loop $continue|0 - local.get $2 - local.get $7 - i32.ne - if - local.get $2 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $2 - f32.load - f32.store - local.get $3 - local.get $2 - f32.load - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=4 - local.get $8 - local.get $3 - i32.store - local.get $3 - i32.const 8 - i32.add - local.set $3 - end - local.get $2 - i32.const 8 - i32.add - local.set $2 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 58 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - f32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 59 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 60 ;) (type $FUNCSIG$v) - (local $0 f32) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - f32.const 100 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f32.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - f32.const 50 - f32.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (; 61 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - i32.const 24 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 62 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - f64.load - local.get $1 - f64.eq - end - if - local.get $0 - return - end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 63 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.tee $2 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $5 - local.set $3 - loop $continue|0 - local.get $2 - local.get $7 - i32.ne - if - local.get $2 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $2 - f64.load - f64.store - local.get $3 - local.get $2 - f64.load - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $8 - i32.load - i32.store offset=8 - local.get $8 - local.get $3 - i32.store - local.get $3 - i32.const 16 - i32.add - local.set $3 - end - local.get $2 - i32.const 16 - i32.add - local.set $2 - br $continue|0 - end - end - local.get $0 - local.get $4 - local.get $0 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $5 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 65 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.set $2 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 4 - i32.shl - local.get $2 - i32.add - local.tee $2 - local.get $1 - f64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $3 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store - end - ) - (func $~lib/set/Set#delete (; 66 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $2 - i32.const 4 - local.get $2 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric (; 67 ;) (type $FUNCSIG$v) - (local $0 f64) - (local $1 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $repeat|0 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|0 - else - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 50 - local.set $0 - loop $repeat|1 - local.get $0 - f64.const 100 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|1 - else - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $repeat|2 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|2 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $0 - loop $repeat|3 - local.get $0 - f64.const 50 - f64.lt - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#delete - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $repeat|3 - end - unreachable - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#clear - local.get $1 - i32.load offset=20 - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start (; 68 ;) (type $FUNCSIG$v) - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - ) - (func $~lib/rt/tlsf/removeBlock (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $2 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 70 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $3 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $2 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 3 - i32.and - local.get $2 - i32.or - local.tee $3 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $5 - end - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $2 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $7 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $3 - i32.store - local.get $2 - else - local.get $1 - end - local.set $1 - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 168 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $4 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $4 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $4 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.set $2 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $2 - i32.store offset=20 - local.get $2 - if - local.get $2 - local.get $1 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (; 71 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 168 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 168 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 72 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 624 - i32.const 0 - i32.store - i32.const 2192 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 624 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 624 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 624 - i32.const 2208 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 624 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 168 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 75 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 168 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 168 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (; 79 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 272 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 272 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 616 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -6729,7 +1325,7 @@ i32.and if i32.const 0 - i32.const 168 + i32.const 24 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -6746,32 +1342,27 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - if (result i32) - local.get $0 - i32.const 400 - i32.load - i32.gt_u - else - i32.const 1 - end + i32.const 400 + i32.load + i32.gt_u if - i32.const 320 - i32.const 376 - i32.const 23 - i32.const 34 + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $0 i32.const 3 i32.shl - i32.const 400 + i32.const 404 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -6944,7 +1535,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 84 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6980,7 +1571,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 85 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -6999,7 +1590,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 86 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7016,7 +1607,7 @@ i32.and if i32.const 0 - i32.const 272 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -7049,7 +1640,7 @@ i32.le_u if i32.const 0 - i32.const 272 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -7089,35 +1680,162 @@ end end ) - (func $~lib/rt/pure/__retainRelease (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 508 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/set/Set#clear (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 26 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/rt/pure/__retainRelease (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.ne if - local.get $0 - i32.const 616 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end local.get $1 - i32.const 616 + i32.const 508 i32.gt_u if local.get $1 i32.const 16 i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + i32.const 508 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub call $~lib/rt/pure/decrement end end - local.get $0 + local.get $1 ) - (func $~lib/rt/pure/__release (; 88 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 616 + i32.const 508 i32.gt_u if local.get $0 @@ -7126,15 +1844,5294 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/set/Set#__visit_impl (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i32.load + (func $~lib/set/Set#rehash (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $1 - call $~lib/rt/pure/__visit + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load8_s + i32.store8 + local.get $2 + local.get $3 + i32.load8_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $3 + i32.const 8 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $2 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 34 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 35 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#has (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $2 + local.get $3 + i32.load8_u + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $3 + i32.const 8 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $2 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 40 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 41 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $7 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $8 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $8 + i32.ne + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load16_s + i32.store16 + local.get $2 + local.get $3 + i32.load16_s + local.tee $6 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $6 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $6 + i32.load + i32.store offset=4 + local.get $6 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $3 + i32.const 8 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $2 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $2 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.tee $2 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + i32.store16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 47 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 48 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#has (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $7 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $8 + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $8 + i32.ne + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $3 + i32.load16_u + i32.store16 + local.get $2 + local.get $3 + i32.load16_u + local.tee $6 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $6 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $6 + i32.load + i32.store offset=4 + local.get $6 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $3 + i32.const 8 + i32.add + local.set $3 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $2 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.tee $2 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + i32.store16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 53 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 54 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/hash32 (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/set/Set#find (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load + local.get $1 + i32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.ne + if + local.get $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + i32.load + i32.store + local.get $3 + local.get $2 + i32.load + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $2 + i32.const 8 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 59 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 60 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 61 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 62 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $std/set/testNumeric (; 63 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 64 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 65 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/hash64 (; 66 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/set/Set#find (; 67 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i64.load + local.get $1 + i64.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 68 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.ne + if + local.get $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + i64.load + i64.store + local.get $3 + local.get $2 + i64.load + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 16 + i32.add + local.set $3 + end + local.get $2 + i32.const 16 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 70 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + i64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 71 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + i32.const 4 + local.get $2 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 72 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i64.const 100 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i64.const 100 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i64.const 50 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i64.const 50 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 73 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $std/set/testNumeric (; 74 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i64.const 100 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + i64.const 100 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i64.const 50 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i64.const 50 + i64.lt_u + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 75 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 76 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + f32.load + local.get $1 + f32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 77 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 78 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.ne + if + local.get $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + f32.load + f32.store + local.get $3 + local.get $2 + f32.load + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=4 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 8 + i32.add + local.set $3 + end + local.get $2 + i32.const 8 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 79 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + f32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 80 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + i32.const 4 + local.get $2 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 81 ;) (type $FUNCSIG$v) + (local $0 f32) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + f32.const 100 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + f32.const 100 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + f32.const 50 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + f32.const 50 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#constructor (; 82 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 83 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + f64.load + local.get $1 + f64.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 84 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.tee $6 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $7 + local.get $5 + local.set $3 + loop $continue|0 + local.get $2 + local.get $7 + i32.ne + if + local.get $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $2 + f64.load + f64.store + local.get $3 + local.get $2 + f64.load + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $3 + i32.store + local.get $3 + i32.const 16 + i32.add + local.set $3 + end + local.get $2 + i32.const 16 + i32.add + local.set $2 + br $continue|0 + end + end + local.get $0 + local.get $0 + i32.load + local.get $4 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 86 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.tee $3 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + local.get $2 + i32.add + local.tee $2 + local.get $1 + f64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $3 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + ) + (func $~lib/set/Set#delete (; 87 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $2 + i32.const 4 + local.get $2 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + ) + (func $std/set/testNumeric (; 88 ;) (type $FUNCSIG$v) + (local $0 f64) + (local $1 i32) + call $~lib/set/Set#constructor + local.set $1 + loop $repeat|0 + local.get $0 + f64.const 100 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|0 + else + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f64.const 50 + local.set $0 + loop $repeat|1 + local.get $0 + f64.const 100 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|1 + else + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + f64.const 50 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + f64.const 50 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#add + local.get $1 + local.get $0 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/set/Set#delete + local.get $1 + local.get $0 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/set/Set#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + ) + (func $start (; 89 ;) (type $FUNCSIG$v) + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric ) (func $~lib/rt/pure/markGray (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) @@ -7237,7 +7234,7 @@ ) (func $~lib/rt/pure/__visit (; 94 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 616 + i32.const 508 i32.lt_u if return @@ -7280,7 +7277,7 @@ i32.le_u if i32.const 0 - i32.const 272 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -7313,7 +7310,7 @@ i32.ne if i32.const 0 - i32.const 272 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -7338,7 +7335,7 @@ br $break|0 end i32.const 0 - i32.const 272 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -7347,44 +7344,37 @@ ) (func $~lib/rt/__visit_members (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $folding-inner0 - block $switch$1$case$28 - block - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$case$28 $switch$1$default - end - unreachable - end - return - end - local.get $0 - i32.load - local.tee $0 - if + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default end return - unreachable end - unreachable + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end + return end - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return + unreachable end local.get $0 + i32.load local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/pure/__visit ) (func $null (; 96 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index df257431..56f20591 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -1,12 +1,12 @@ (module (type $FUNCSIG$v (func)) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iij (func (param i32 i64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$iiji (func (param i32 i64 i32) (result i32))) @@ -22,15 +22,15 @@ (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 56) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 112) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") - (data (i32.const 152) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 200) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 256) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 304) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 360) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 400) "\1a\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00*\00\00\00\00\00\00\00*\00\00\00\00\00\00\00J\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00") + (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 160) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 208) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 360) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") + (data (i32.const 400) "\0d\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00\1a\00\00\00\00\00\00\00*\00\00\00\00\00\00\00*\00\00\00\00\00\00\00J\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00J\00\00\00\00\00\00\00\8a\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -38,10 +38,1416 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/RTTI_BASE i32 (i32.const 400)) - (global $~lib/heap/HEAP_BASE i32 (i32.const 616)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 508)) (export "memory" (memory $0)) (start $start) - (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 275 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 290 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + i32.eq + if + block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + end + local.get $7 + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $8 + block $~lib/rt/tlsf/SETSL|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $8 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $8 + local.set $9 + local.get $11 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store offset=4 + end + local.get $8 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + end + local.set $3 + local.get $3 + i32.load + local.set $6 + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $3 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.set $7 + local.get $3 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $0 + local.set $12 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $1 + local.set $7 + local.get $12 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + end + ) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (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 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 72 + i32.const 24 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 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 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + 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 $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/memory/memory.fill (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -304,21 +1710,21 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 i32.gt_u if - i32.const 24 - i32.const 72 + i32.const 176 + i32.const 224 i32.const 56 i32.const 42 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.set $2 local.get $2 @@ -328,8895 +1734,19 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash8 (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const -2128831035 - local.get $0 - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load8_s - i32.store8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 15 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load8_u - i32.store8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 24 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash16 (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/set/Set#find (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load16_s - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 34 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load16_u - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 40 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 43 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash32 (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/set/Set#find (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 53 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 54 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 58 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 59 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 62 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 63 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/util/hash/hash64 (; 65 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 - local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - ) - (func $~lib/set/Set#find (; 66 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 67 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 68 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i64.load - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 69 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 71 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 72 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i64.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i64.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 73 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 75 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 76 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 77 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i64.load - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 78 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 80 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 81 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i64.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i64.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 83 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 84 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 85 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - f32.load - f32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f32.load - local.set $11 - local.get $11 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 87 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - f32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=4 - local.get $5 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 89 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 90 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 f32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - f32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - f32.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - f32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - f32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#clear (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/pure/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/set/Set#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/set/Set#clear - local.get $0 - ) - (func $~lib/set/Set#find (; 93 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (; 94 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (; 95 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - f64.load - f64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f64.load - local.set $11 - local.get $11 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/pure/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/pure/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (; 96 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - f64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - ) - (func $~lib/set/Set#get:size (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/set/Set#delete (; 98 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $std/set/testNumeric (; 99 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 f64) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - block $break|0 - f64.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 6 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - f64.const 50 - local.set $1 - loop $repeat|1 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 14 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - f64.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - f64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 32 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 34 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/set (; 100 ;) (type $FUNCSIG$v) - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - ) - (func $start (; 101 ;) (type $FUNCSIG$v) - call $start:std/set - ) - (func $~lib/rt/tlsf/removeBlock (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 103 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 - i32.load - local.set $6 - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $3 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end - ) - (func $~lib/rt/tlsf/addMemory (; 104 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 105 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 216 - i32.const 168 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 108 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 109 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 110 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 168 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (; 112 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 114 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 168 i32.const 530 i32.const 2 call $~lib/builtins/abort @@ -9233,36 +1763,32 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/__typeinfo (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/RTTI_BASE local.set $1 local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end + local.get $1 + i32.load + i32.gt_u if - i32.const 320 - i32.const 376 - i32.const 23 - i32.const 34 + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 call $~lib/builtins/abort unreachable end local.get $1 + i32.const 4 + i32.add local.get $0 i32.const 8 i32.mul i32.add i32.load ) - (func $~lib/memory/memory.copy (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9468,7 +1994,7 @@ end end ) - (func $~lib/rt/pure/growRoots (; 117 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9513,7 +2039,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 118 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -9533,7 +2059,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 119 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9553,7 +2079,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 114 i32.const 13 call $~lib/builtins/abort @@ -9592,7 +2118,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 123 i32.const 15 call $~lib/builtins/abort @@ -9637,23 +2163,172 @@ end end ) - (func $~lib/rt/pure/__retainRelease (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/set/Set#clear (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/hash8 (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const -2128831035 + local.get $0 + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/set/Set#find (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_s + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/rt/pure/__retainRelease (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 i32.ne if global.get $~lib/heap/HEAP_BASE local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end local.get $1 local.get $2 i32.gt_u @@ -9661,12 +2336,21 @@ local.get $1 i32.const 16 i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub call $~lib/rt/pure/decrement end end - local.get $0 + local.get $1 ) - (func $~lib/rt/pure/__release (; 121 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.get $~lib/heap/HEAP_BASE i32.gt_u @@ -9677,137 +2361,7293 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/set/Set#__visit_impl (; 122 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 - i32.load + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $1 - call $~lib/rt/pure/__visit + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 - local.set $2 - local.get $2 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load8_s + i32.store8 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load8_s + local.set $11 + local.get $11 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/set/Set#__visit_impl (; 123 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 36 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $0 i32.load - local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 ) - (func $~lib/set/Set#__visit_impl (; 124 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#has (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 - local.set $2 - local.get $2 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load8_u + i32.store8 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load8_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/set/Set#__visit_impl (; 125 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 45 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 46 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/hash16 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/set/Set#find (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_s + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 - local.set $2 - local.get $2 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_s + i32.store16 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load16_s + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/set/Set#__visit_impl (; 126 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 55 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 60 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 - local.set $2 - local.get $2 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load16_u + i32.store16 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load16_u + local.set $11 + local.get $11 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/set/Set#__visit_impl (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 61 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 64 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 65 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/hash32 (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/set/Set#find (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 70 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 - local.set $2 - local.get $2 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/set/Set#__visit_impl (; 128 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 71 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 74 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 75 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne ) - (func $~lib/set/Set#__visit_impl (; 129 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 - i32.load + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $1 - call $~lib/rt/pure/__visit + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 - local.set $2 - local.get $2 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i32.load + i32.store + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i32.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/set/Set#__visit_impl (; 130 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + i32.store offset=4 + local.get $2 + local.get $4 + i32.store + end ) - (func $~lib/set/Set#__visit_impl (; 131 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#get:size (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 83 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i32.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i32.const 100 + i32.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i32.const 50 + i32.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/util/hash/hash64 (; 86 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.wrap_i64 + local.set $1 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $2 + i32.const -2128831035 + local.set $3 + local.get $3 + local.get $1 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + ) + (func $~lib/set/Set#find (; 87 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) local.get $0 i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 88 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 local.get $0 i32.load offset=8 - local.set $2 - local.get $2 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i64.load + i64.store + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i64.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release ) - (func $~lib/rt/pure/markGray (; 132 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/set/Set#add (; 90 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $5 + local.get $4 + local.get $5 + i32.load + i32.store offset=8 + local.get $5 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 92 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 93 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i64) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i64.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i64.const 100 + i64.lt_s + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i64.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i64.const 100 + i64.lt_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i64.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i64.const 50 + i64.lt_s + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i64.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i64.const 50 + i64.lt_s + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 94 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 96 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 97 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 98 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + i64.load + i64.store + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + i64.load + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 99 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + i64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $5 + local.get $4 + local.get $5 + i32.load + i32.store offset=8 + local.get $5 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 101 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 102 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i64) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + i64.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i64.const 100 + i64.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + i64.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + i64.const 100 + i64.lt_u + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + i64.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + i64.const 50 + i64.lt_u + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + i64.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + i64.const 50 + i64.lt_u + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 103 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 105 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f32.load + local.get $1 + f32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 106 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 107 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 8 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + f32.load + f32.store + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + f32.load + local.set $11 + local.get $11 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=4 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 8 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 8 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 108 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (local $2 f32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 8 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + f32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $5 + local.get $4 + local.get $5 + i32.load + i32.store offset=4 + local.get $5 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 110 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 111 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 f32) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + f32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + f32.const 100 + f32.lt + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + f32.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + f32.const 100 + f32.lt + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + f32.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + f32.const 50 + f32.lt + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + f32.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + f32.const 50 + f32.lt + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#clear (; 112 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + local.tee $1 + local.get $1 + i32.load + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/pure/__skippedRelease + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + ) + (func $~lib/set/Set#constructor (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + block (result i32) + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + end + call $~lib/set/Set#clear + local.get $0 + ) + (func $~lib/set/Set#find (; 114 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + block $break|0 + loop $continue|0 + local.get $3 + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f64.load + local.get $1 + f64.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 + end + end + end + i32.const 0 + ) + (func $~lib/set/Set#has (; 115 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + ) + (func $~lib/set/Set#rehash (; 116 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f64) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.add + local.set $2 + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $3 + local.get $2 + f64.convert_i32_s + f64.const 2.6666666666666665 + f64.mul + i32.trunc_f64_s + local.set $4 + i32.const 0 + local.get $4 + block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) + i32.const 16 + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $7 + local.get $5 + local.set $8 + block $break|0 + loop $continue|0 + local.get $6 + local.get $7 + i32.ne + if + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 + local.get $9 + f64.load + f64.store + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $9 + f64.load + local.set $11 + local.get $11 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul + i32.add + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) + i32.const 16 + end + i32.add + local.set $8 + end + local.get $6 + block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) + i32.const 16 + end + i32.add + local.set $6 + br $continue|0 + end + end + end + local.get $0 + local.tee $9 + local.get $9 + i32.load + local.get $3 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 + local.get $5 + call $~lib/rt/pure/__retainRelease + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + ) + (func $~lib/set/Set#add (; 117 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + block (result i32) + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + end + block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) + i32.const 16 + end + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + f64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $5 + local.get $4 + local.get $5 + i32.load + i32.store offset=8 + local.get $5 + local.get $4 + i32.store + end + ) + (func $~lib/set/Set#get:size (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/set/Set#delete (; 119 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + return + end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_u + select + i32.ge_u + if (result i32) + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 + f64.convert_i32_s + f64.const 0.75 + f64.mul + i32.trunc_f64_s + i32.lt_s + else + i32.const 0 + end + if + local.get $0 + local.get $4 + call $~lib/set/Set#rehash + end + i32.const 1 + ) + (func $std/set/testNumeric (; 120 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 f64) + i32.const 0 + call $~lib/set/Set#constructor + local.set $0 + block $break|0 + f64.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + f64.const 100 + f64.lt + i32.eqz + br_if $break|0 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|0 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|1 + f64.const 50 + local.set $1 + loop $repeat|1 + local.get $1 + f64.const 100 + f64.lt + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 14 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|1 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 18 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|2 + f64.const 0 + local.set $1 + loop $repeat|2 + local.get $1 + f64.const 50 + f64.lt + i32.eqz + br_if $break|2 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 22 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 24 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|2 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 26 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|3 + f64.const 0 + local.set $1 + loop $repeat|3 + local.get $1 + f64.const 50 + f64.lt + i32.eqz + br_if $break|3 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 30 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#add + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 32 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $repeat|3 + unreachable + end + unreachable + end + local.get $0 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/set/Set#clear + local.get $0 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + ) + (func $start:std/set (; 121 ;) (type $FUNCSIG$v) + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + ) + (func $start (; 122 ;) (type $FUNCSIG$v) + call $start:std/set + ) + (func $~lib/rt/pure/markGray (; 123 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -9834,7 +9674,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 133 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 124 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -9851,7 +9691,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 134 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 125 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -9888,7 +9728,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 135 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 126 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -9917,7 +9757,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 136 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -9979,7 +9819,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -10026,7 +9866,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -10063,7 +9903,7 @@ i32.eqz if i32.const 0 - i32.const 272 + i32.const 128 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -10071,33 +9911,163 @@ end end ) - (func $~lib/rt/__visit_members (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 128 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 129 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 130 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 131 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 132 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 133 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 134 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 135 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 136 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/set/Set#__visit_impl (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + local.set $2 + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + ) + (func $~lib/rt/__visit_members (; 138 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block end block $switch$1$leave - block $switch$1$case$28 - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -10107,7 +10077,19 @@ end block block - return + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable unreachable end unreachable @@ -10119,13 +10101,8 @@ block block local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end + local.get $1 + call $~lib/set/Set#__visit_impl return unreachable end @@ -10142,7 +10119,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10159,7 +10136,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10176,7 +10153,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10193,7 +10170,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10210,7 +10187,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10227,7 +10204,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10244,7 +10221,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10261,7 +10238,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10278,7 +10255,7 @@ block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return unreachable end @@ -10292,13 +10269,6 @@ end block block - block - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - unreachable - end unreachable unreachable end @@ -10308,6 +10278,6 @@ unreachable end ) - (func $null (; 138 ;) (type $FUNCSIG$v) + (func $null (; 139 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 8c54411a..52773fe0 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1,53 +1,31 @@ (module - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ji (func (param i32) (result i64))) (type $FUNCSIG$fi (func (param i32) (result f32))) (type $FUNCSIG$di (func (param i32) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0f\00\00\00\08") - (data (i32.const 24) "\01\00\00\00\02") - (data (i32.const 32) "\11\00\00\00\10") - (data (i32.const 48) "\18\00\00\00\18\00\00\00\08\00\00\00\02") - (data (i32.const 64) "\0f\00\00\00\10") - (data (i32.const 80) "\03\00\00\00\00\00\00\00\04") - (data (i32.const 96) "\12\00\00\00\10") - (data (i32.const 112) "P\00\00\00P\00\00\00\10\00\00\00\02") - (data (i32.const 128) "\0f\00\00\00\08") - (data (i32.const 146) "\c0?\00\00 @") - (data (i32.const 152) "\13\00\00\00\10") - (data (i32.const 168) "\90\00\00\00\90\00\00\00\08\00\00\00\02") - (data (i32.const 184) "\0f\00\00\00\10") + (data (i32.const 8) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\08\00\00\00\02") + (data (i32.const 64) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04") + (data (i32.const 96) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00P\00\00\00P\00\00\00\10\00\00\00\02") + (data (i32.const 128) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") + (data (i32.const 152) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\08\00\00\00\02") + (data (i32.const 184) "\10\00\00\00\01\00\00\00\00\00\00\00\10") (data (i32.const 206) "\f4?\00\00\00\00\00\00\02@") - (data (i32.const 216) "\14\00\00\00\10") - (data (i32.const 232) "\c8\00\00\00\c8\00\00\00\10\00\00\00\02") - (data (i32.const 248) "\10\00\00\00&") - (data (i32.const 264) "s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 304) "\10\00\00\00\1a") - (data (i32.const 320) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 352) "\10\00\00\00(") - (data (i32.const 368) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 408) "\10\00\00\00\1e") - (data (i32.const 424) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 456) "\14\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00\89\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\89\00\00\00\0e") - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (data (i32.const 216) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\c8\00\00\00\c8\00\00\00\10\00\00\00\02") + (data (i32.const 248) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 304) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 360) "\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 408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/allocator/arena/__mem_free)) - (export "$.release" (func $~lib/allocator/arena/__mem_free)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) (func $~lib/array/Array#__get (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -57,9 +35,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -72,18 +50,21 @@ i32.add i32.load ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -91,20 +72,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -112,16 +93,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -130,14 +111,25 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 + i32.const 16 + i32.sub + local.tee $2 local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 ) (func $~lib/memory/memory.copy (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 local.get $0 local.get $1 i32.eq @@ -159,15 +151,15 @@ i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -176,7 +168,7 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 @@ -184,7 +176,7 @@ end end loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if @@ -192,10 +184,10 @@ local.get $1 i64.load i64.store - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 + local.set $3 local.get $0 i32.const 8 i32.add @@ -209,10 +201,10 @@ end end loop $continue|2 - local.get $2 + local.get $3 if local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -221,14 +213,14 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 br $continue|2 end end @@ -243,22 +235,22 @@ if loop $continue|3 local.get $0 - local.get $2 + local.get $3 i32.add i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -266,18 +258,18 @@ end end loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $2 + local.get $0 + local.get $3 i32.const 8 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i64.load i64.store @@ -286,16 +278,16 @@ end end loop $continue|5 - local.get $2 + local.get $3 if - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -305,7 +297,36 @@ end end ) - (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/stub/__realloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 16 + i32.sub + local.tee $2 + i32.load offset=12 + local.tee $3 + i32.gt_u + if + local.get $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.tee $1 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $1 + local.set $0 + else + local.get $2 + local.get $1 + i32.store offset=12 + end + local.get $0 + ) + (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -516,111 +537,14 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/util/runtime/reallocate (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/ensureSize (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 16 - i32.sub - local.tee $3 - i32.load offset=4 - local.tee $2 - local.get $1 - i32.lt_u - if - i32.const 1 - i32.const 32 - local.get $1 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - local.tee $4 - local.set $5 - i32.const 1 - i32.const 32 - local.get $2 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - i32.const 0 - local.get $0 - i32.const 624 - i32.gt_u - select - local.get $4 - i32.lt_u - if - local.get $5 - call $~lib/allocator/arena/__mem_allocate - local.tee $4 - local.get $3 - i32.load - i32.store - local.get $4 - i32.const 16 - i32.add - local.tee $5 - local.get $0 - local.get $2 - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.get $1 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - local.get $3 - i32.load - i32.const -1520547049 - i32.eq - if - local.get $0 - i32.const 624 - i32.le_u - if - i32.const 0 - i32.const 368 - i32.const 89 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - end - local.get $4 - local.set $3 - local.get $5 - local.set $0 - else - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.sub - call $~lib/memory/memory.fill - end - end - local.get $3 - local.get $1 - i32.store offset=4 - local.get $0 - ) - (func $~lib/array/ensureCapacity (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) i32.const 1 local.get $0 i32.load offset=8 + local.tee $2 local.get $1 i32.shr_u i32.gt_u @@ -631,24 +555,30 @@ i32.shr_u i32.gt_u if - i32.const 0 - i32.const 320 + i32.const 424 + i32.const 376 i32.const 14 - i32.const 64 + i32.const 47 call $~lib/builtins/abort unreachable end local.get $0 i32.load - local.tee $2 + local.tee $4 i32.const 1 local.get $1 i32.shl local.tee $3 - call $~lib/util/runtime/reallocate - local.set $1 - local.get $1 + call $~lib/rt/stub/__realloc + local.tee $1 local.get $2 + i32.add + local.get $3 + local.get $2 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $4 i32.ne if local.get $0 @@ -663,14 +593,14 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__set (; 8 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 7 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 60 i32.load local.set $0 i32.const 48 i32.const 2 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize i32.const 52 i32.load i32.const 2 @@ -684,7 +614,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 9 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/array/Array#__get (; 8 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) local.get $0 i32.const 120 i32.load @@ -692,9 +622,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -707,14 +637,14 @@ i32.add i64.load ) - (func $~lib/array/Array#__set (; 10 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 9 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 124 i32.load local.set $0 i32.const 112 i32.const 3 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize i32.const 116 i32.load i64.const 4 @@ -728,7 +658,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 11 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) + (func $~lib/array/Array#__get (; 10 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) local.get $0 i32.const 176 i32.load @@ -736,9 +666,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -751,14 +681,14 @@ i32.add f32.load ) - (func $~lib/array/Array#__set (; 12 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 11 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 180 i32.load local.set $0 i32.const 168 i32.const 2 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize i32.const 172 i32.load f32.const 2.5 @@ -772,7 +702,7 @@ i32.store end ) - (func $~lib/array/Array#__get (; 13 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/array/Array#__get (; 12 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) local.get $0 i32.const 240 i32.load @@ -780,9 +710,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -795,14 +725,14 @@ i32.add f64.load ) - (func $~lib/array/Array#__set (; 14 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__set (; 13 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 244 i32.load local.set $0 i32.const 232 i32.const 3 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize i32.const 236 i32.load f64.const 2.25 @@ -816,7 +746,7 @@ i32.store end ) - (func $start:std/static-array (; 15 ;) (type $FUNCSIG$v) + (func $start:std/static-array (; 14 ;) (type $FUNCSIG$v) i32.const 60 i32.load i32.const 2 @@ -853,10 +783,10 @@ call $~lib/builtins/abort unreachable end - i32.const 624 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 464 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset call $~lib/array/Array#__set i32.const 0 call $~lib/array/Array#__get @@ -1018,240 +948,10 @@ unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 456 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 456 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 456 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 456 - i32.add - i32.load - end - ) - (func $~lib/util/runtime/allocate (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 624 - i32.le_u - if - i32.const 0 - i32.const 368 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 368 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - ) - (func $~lib/runtime/runtime.newObject (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block (result i32) - local.get $0 - call $~lib/util/runtime/allocate - end - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 456 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 456 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and - if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 424 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $0 - ) - (func $~lib/runtime/runtime.collect (; 24 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 424 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 25 ;) (type $FUNCSIG$v) + (func $start (; 15 ;) (type $FUNCSIG$v) call $start:std/static-array ) - (func $null (; 26 ;) (type $FUNCSIG$v) + (func $null (; 16 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index be3f14d9..de846c95 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -3,7 +3,6 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$viij (func (param i32 i32 i64))) (type $FUNCSIG$fii (func (param i32 i32) (result f32))) @@ -13,43 +12,28 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0f\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 32) "\11\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\18\00\00\00\08\00\00\00\02\00\00\00") - (data (i32.const 64) "\0f\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 96) "\12\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00P\00\00\00P\00\00\00\10\00\00\00\02\00\00\00") - (data (i32.const 128) "\0f\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 152) "\13\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\90\00\00\00\90\00\00\00\08\00\00\00\02\00\00\00") - (data (i32.const 184) "\0f\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f4?\00\00\00\00\00\00\02@") - (data (i32.const 216) "\14\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\c8\00\00\00\c8\00\00\00\10\00\00\00\02\00\00\00") - (data (i32.const 248) "\10\00\00\00&\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 304) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 352) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 408) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 456) "\14\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00\89\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\89\00\00\00\0e\00\00\00") + (data (i32.const 8) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\08\00\00\00\02\00\00\00") + (data (i32.const 64) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 96) "\10\00\00\00\01\00\00\00\04\00\00\00\10\00\00\00P\00\00\00P\00\00\00\10\00\00\00\02\00\00\00") + (data (i32.const 128) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\00\00\c0?\00\00 @") + (data (i32.const 152) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\08\00\00\00\02\00\00\00") + (data (i32.const 184) "\10\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\f4?\00\00\00\00\00\00\02@") + (data (i32.const 216) "\10\00\00\00\01\00\00\00\06\00\00\00\10\00\00\00\c8\00\00\00\c8\00\00\00\10\00\00\00\02\00\00\00") + (data (i32.const 248) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00s\00t\00d\00/\00s\00t\00a\00t\00i\00c\00-\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 304) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 360) "\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 408) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/static-array/i i32 (i32.const 48)) (global $std/static-array/I i32 (i32.const 112)) (global $std/static-array/f i32 (i32.const 168)) (global $std/static-array/F i32 (i32.const 232)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/util/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 456)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 624)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 452)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) (func $~lib/array/Array#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -72,9 +56,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -83,60 +67,51 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/util/runtime/adjust (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl - ) - (func $~lib/allocator/arena/__mem_allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -146,22 +121,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -170,101 +145,109 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 + i32.sub + local.set $8 + local.get $8 local.get $1 - ) - (func $~lib/memory/memory.allocate (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.store offset=8 + local.get $8 local.get $0 - call $~lib/allocator/arena/__mem_allocate - return + i32.store offset=12 + local.get $2 ) - (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 br $continue|0 end end end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 br $continue|1 end end @@ -272,95 +255,89 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if - block - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $5 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $5 + local.get $6 end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store br $continue|4 end end @@ -368,16 +345,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -388,419 +365,369 @@ end end ) - (func $~lib/memory/memory.fill (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/stub/__realloc (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 16 + i32.sub + local.set $2 + local.get $2 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + local.get $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__alloc + local.set $4 + local.get $4 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $4 + local.set $0 + else + local.get $2 + local.get $1 + i32.store offset=12 + end + local.get $0 + ) + (func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 local.get $2 + local.set $3 + local.get $3 i32.eqz if br $~lib/util/memory/memset|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 1 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 2 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 1 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 + local.get $5 i32.const 2 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 2 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 3 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 6 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 3 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end i32.const 0 - local.get $0 + local.get $5 i32.sub i32.const 3 i32.and - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -4 i32.and - local.set $2 + local.set $3 i32.const -1 i32.const 255 i32.div_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.mul - local.set $4 - local.get $0 - local.get $4 + local.set $7 + local.get $5 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 4 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 8 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 12 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 8 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 24 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 12 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 16 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 20 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 24 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 28 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 24 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 20 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 16 i32.sub - local.get $4 + local.get $7 i32.store i32.const 24 - local.get $0 + local.get $5 i32.const 4 i32.and i32.add - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $4 + local.set $3 + local.get $7 i64.extend_i32_u - local.get $4 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $6 + local.set $8 block $break|0 loop $continue|0 - local.get $2 + local.get $3 i32.const 32 i32.ge_u if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 br $continue|0 end end end end ) - (func $~lib/allocator/arena/__mem_free (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/memory/memory.free (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__retain (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/allocator/arena/__mem_free ) - (func $~lib/util/runtime/reallocate (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/ensureSize (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - local.get $1 - i32.lt_u - if - local.get $1 - call $~lib/util/runtime/adjust - local.set $4 - local.get $3 - call $~lib/util/runtime/adjust - i32.const 0 - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - select - local.get $4 - i32.lt_u - if - local.get $4 - call $~lib/memory/memory.allocate - local.set $5 - local.get $5 - local.get $2 - i32.load - i32.store - local.get $5 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - local.set $6 - local.get $6 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $1 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - if - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 89 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/memory/memory.free - else - nop - end - local.get $5 - local.set $2 - local.get $6 - local.set $0 - else - local.get $0 - local.get $3 - i32.add - i32.const 0 - local.get $1 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - end - else - nop - end - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - ) - (func $~lib/array/ensureCapacity (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.get $0 i32.load offset=8 + local.set $3 + local.get $1 + local.get $3 local.get $2 i32.shr_u i32.gt_u if local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 local.get $2 i32.shr_u i32.gt_u if - i32.const 0 - i32.const 320 + i32.const 424 + i32.const 376 i32.const 14 - i32.const 64 + i32.const 47 call $~lib/builtins/abort unreachable end local.get $0 i32.load - local.set $3 + local.set $4 local.get $1 local.get $2 i32.shl - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/runtime/reallocate local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/stub/__realloc + local.set $6 + local.get $6 + local.get $3 + i32.add + i32.const 0 local.get $5 local.get $3 + i32.sub + call $~lib/memory/memory.fill + local.get $6 + local.get $4 i32.ne if local.get $0 - local.get $5 + local.get $6 + call $~lib/rt/stub/__retain i32.store local.get $0 - local.get $5 + local.get $6 i32.store offset=4 end local.get $0 - local.get $4 + local.get $5 i32.store offset=8 end ) - (func $~lib/array/Array#__unchecked_set (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -810,7 +737,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -820,7 +747,7 @@ i32.const 1 i32.add i32.const 2 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize local.get $0 local.get $1 local.get $2 @@ -836,11 +763,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 16 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 13 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -849,7 +776,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 17 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 14 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -857,9 +784,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -868,7 +795,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 18 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 15 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -878,7 +805,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 19 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 16 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $0 i32.load offset=12 @@ -888,7 +815,7 @@ i32.const 1 i32.add i32.const 3 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize local.get $0 local.get $1 local.get $2 @@ -904,11 +831,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 21 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 18 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -917,7 +844,7 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 22 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 19 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -925,9 +852,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -936,7 +863,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 23 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__unchecked_set (; 20 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=4 local.get $1 @@ -946,7 +873,7 @@ local.get $2 f32.store ) - (func $~lib/array/Array#__set (; 24 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__set (; 21 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) local.get $0 i32.load offset=12 @@ -956,7 +883,7 @@ i32.const 1 i32.add i32.const 2 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize local.get $0 local.get $1 local.get $2 @@ -972,11 +899,11 @@ i32.store offset=12 end ) - (func $~lib/array/Array#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 26 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 23 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -985,7 +912,7 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 27 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 24 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -993,9 +920,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 320 - i32.const 99 + i32.const 376 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -1004,7 +931,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__unchecked_set (; 28 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__unchecked_set (; 25 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 local.get $1 @@ -1014,7 +941,7 @@ local.get $2 f64.store ) - (func $~lib/array/Array#__set (; 29 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 26 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) local.get $0 i32.load offset=12 @@ -1024,7 +951,7 @@ i32.const 1 i32.add i32.const 3 - call $~lib/array/ensureCapacity + call $~lib/array/ensureSize local.get $0 local.get $1 local.get $2 @@ -1040,7 +967,9 @@ i32.store offset=12 end ) - (func $start:std/static-array (; 30 ;) (type $FUNCSIG$v) + (func $start:std/static-array (; 27 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) global.get $std/static-array/i call $~lib/array/Array#get:length i32.const 2 @@ -1082,16 +1011,16 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset global.get $std/static-array/i i32.const 0 i32.const 2 @@ -1288,259 +1217,9 @@ unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 - local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/util/runtime/allocate (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 368 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - ) - (func $~lib/runtime/runtime.newObject (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 - ) - (func $~lib/runtime/runtime.retain (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 42 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 424 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 44 ;) (type $FUNCSIG$v) + (func $start (; 28 ;) (type $FUNCSIG$v) call $start:std/static-array ) - (func $null (; 45 ;) (type $FUNCSIG$v) + (func $null (; 29 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/string-utf8.optimized.wat b/tests/compiler/std/string-utf8.optimized.wat index f7a404ca..77ce3c2f 100644 --- a/tests/compiler/std/string-utf8.optimized.wat +++ b/tests/compiler/std/string-utf8.optimized.wat @@ -3,45 +3,24 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\0c") - (data (i32.const 24) "\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 40) "\10\00\00\00$") - (data (i32.const 56) "s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00u\00t\00f\008\00.\00t\00s") - (data (i32.const 96) "\10") - (data (i32.const 112) "\10\00\00\00\1c") - (data (i32.const 128) "~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 160) "\10\00\00\00(") - (data (i32.const 176) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 216) "\10\00\00\00\04") - (data (i32.const 232) "\01\d87\dc") - (data (i32.const 240) "\10\00\00\00\04") - (data (i32.const 256) "h\00i") - (data (i32.const 264) "\10\00\00\00\04") - (data (i32.const 280) "R\d8b\df") - (data (i32.const 288) "\10\00\00\00\02") - (data (i32.const 312) "\10\00\00\00\1e") - (data (i32.const 328) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 360) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e") - (global $std/string-utf8/str (mut i32) (i32.const 24)) + (data (i32.const 8) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data (i32.const 40) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00u\00t\00f\008\00.\00t\00s") + (data (i32.const 100) "\01\00\00\00\01") + (data (i32.const 112) "\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 160) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") + (data (i32.const 184) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i") + (data (i32.const 208) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") + (data (i32.const 232) "\02\00\00\00\01\00\00\00\01\00\00\00\02") + (global $std/string-utf8/str i32 (i32.const 24)) (global $std/string-utf8/len (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/string-utf8/ptr (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/allocator/arena/__mem_free)) - (export "$.release" (func $~lib/allocator/arena/__mem_free)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) (func $~lib/string/String#get:lengthUTF8 (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -53,7 +32,7 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u local.set $3 @@ -145,18 +124,21 @@ end local.get $1 ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -164,20 +146,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -185,16 +167,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -203,9 +185,18 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 + i32.const 16 + i32.sub + local.tee $2 local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=12 + local.get $3 ) (func $~lib/string/String#toUTF8 (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -217,12 +208,13 @@ (local $7 i32) local.get $0 call $~lib/string/String#get:lengthUTF8 - call $~lib/allocator/arena/__mem_allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.set $5 local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u local.set $6 @@ -403,31 +395,12 @@ i32.store8 local.get $5 ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.copy (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 local.get $0 local.get $1 i32.eq @@ -449,15 +422,15 @@ i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -466,7 +439,7 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 @@ -474,7 +447,7 @@ end end loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if @@ -482,10 +455,10 @@ local.get $1 i64.load i64.store - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 + local.set $3 local.get $0 i32.const 8 i32.add @@ -499,10 +472,10 @@ end end loop $continue|2 - local.get $2 + local.get $3 if local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -511,14 +484,14 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 br $continue|2 end end @@ -533,22 +506,22 @@ if loop $continue|3 local.get $0 - local.get $2 + local.get $3 i32.add i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -556,18 +529,18 @@ end end loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $2 + local.get $0 + local.get $3 i32.const 8 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i64.load i64.store @@ -576,16 +549,16 @@ end end loop $continue|5 - local.get $2 + local.get $3 if - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -595,43 +568,7 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/util/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 504 - i32.le_u - if - i32.const 0 - i32.const 176 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 176 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - ) - (func $~lib/string/String.fromUTF8 (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromUTF8 (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -647,7 +584,8 @@ local.get $1 i32.const 1 i32.shl - call $~lib/allocator/arena/__mem_allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.set $6 loop $continue|0 local.get $2 @@ -690,7 +628,7 @@ if i32.const 0 i32.const 128 - i32.const 461 + i32.const 450 i32.const 8 call $~lib/builtins/abort unreachable @@ -734,7 +672,7 @@ if i32.const 0 i32.const 128 - i32.const 465 + i32.const 454 i32.const 8 call $~lib/builtins/abort unreachable @@ -813,7 +751,7 @@ if i32.const 0 i32.const 128 - i32.const 477 + i32.const 466 i32.const 8 call $~lib/builtins/abort unreachable @@ -868,22 +806,21 @@ if i32.const 0 i32.const 128 - i32.const 486 + i32.const 475 i32.const 4 call $~lib/builtins/abort unreachable end local.get $5 - call $~lib/util/runtime/allocate + i32.const 1 + call $~lib/rt/stub/__alloc local.tee $0 local.get $6 local.get $5 call $~lib/memory/memory.copy local.get $0 - i32.const 16 - call $~lib/util/runtime/register ) - (func $~lib/util/string/compareImpl (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -916,7 +853,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -925,40 +862,38 @@ i32.const 1 return end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz return end - local.get $0 - i32.const 16 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 ) - (func $start:std/string-utf8 (; 11 ;) (type $FUNCSIG$v) + (func $start:std/string-utf8 (; 8 ;) (type $FUNCSIG$v) global.get $std/string-utf8/str call $~lib/string/String#get:lengthUTF8 global.set $std/string-utf8/len @@ -968,15 +903,15 @@ if i32.const 0 i32.const 56 - i32.const 5 + i32.const 7 i32.const 0 call $~lib/builtins/abort unreachable end - i32.const 504 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 256 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset global.get $std/string-utf8/str call $~lib/string/String#toUTF8 global.set $std/string-utf8/ptr @@ -987,7 +922,7 @@ if i32.const 0 i32.const 56 - i32.const 9 + i32.const 11 i32.const 0 call $~lib/builtins/abort unreachable @@ -999,7 +934,7 @@ if i32.const 0 i32.const 56 - i32.const 10 + i32.const 12 i32.const 0 call $~lib/builtins/abort unreachable @@ -1011,7 +946,7 @@ if i32.const 0 i32.const 56 - i32.const 11 + i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable @@ -1023,7 +958,7 @@ if i32.const 0 i32.const 56 - i32.const 12 + i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable @@ -1035,7 +970,7 @@ if i32.const 0 i32.const 56 - i32.const 13 + i32.const 15 i32.const 0 call $~lib/builtins/abort unreachable @@ -1047,7 +982,7 @@ if i32.const 0 i32.const 56 - i32.const 14 + i32.const 16 i32.const 0 call $~lib/builtins/abort unreachable @@ -1059,7 +994,7 @@ if i32.const 0 i32.const 56 - i32.const 15 + i32.const 17 i32.const 0 call $~lib/builtins/abort unreachable @@ -1071,7 +1006,7 @@ if i32.const 0 i32.const 56 - i32.const 16 + i32.const 18 i32.const 0 call $~lib/builtins/abort unreachable @@ -1083,7 +1018,7 @@ if i32.const 0 i32.const 56 - i32.const 17 + i32.const 19 i32.const 0 call $~lib/builtins/abort unreachable @@ -1095,7 +1030,7 @@ if i32.const 0 i32.const 56 - i32.const 18 + i32.const 20 i32.const 0 call $~lib/builtins/abort unreachable @@ -1105,7 +1040,7 @@ if i32.const 0 i32.const 56 - i32.const 19 + i32.const 21 i32.const 0 call $~lib/builtins/abort unreachable @@ -1119,7 +1054,7 @@ if i32.const 0 i32.const 56 - i32.const 21 + i32.const 23 i32.const 0 call $~lib/builtins/abort unreachable @@ -1132,36 +1067,6 @@ global.get $std/string-utf8/str call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 22 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/string-utf8/ptr - i32.const 4 - call $~lib/string/String.fromUTF8 - i32.const 232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 23 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/string-utf8/ptr - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.fromUTF8 - i32.const 256 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 56 @@ -1171,11 +1076,9 @@ unreachable end global.get $std/string-utf8/ptr - i32.const 6 - i32.add i32.const 4 call $~lib/string/String.fromUTF8 - i32.const 280 + i32.const 176 call $~lib/string/String.__eq i32.eqz if @@ -1187,11 +1090,11 @@ unreachable end global.get $std/string-utf8/ptr - i32.const 10 + i32.const 4 i32.add - i32.const 1 + i32.const 2 call $~lib/string/String.fromUTF8 - i32.const 304 + i32.const 200 call $~lib/string/String.__eq i32.eqz if @@ -1202,185 +1105,43 @@ call $~lib/builtins/abort unreachable end - ) - (func $~lib/runtime/runtime.instanceof (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 360 - i32.load - i32.le_u - else - i32.const 0 - end + global.get $std/string-utf8/ptr + i32.const 6 + i32.add + i32.const 4 + call $~lib/string/String.fromUTF8 + i32.const 224 + call $~lib/string/String.__eq + i32.eqz if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 360 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 360 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) + i32.const 0 + i32.const 56 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 360 - i32.add - i32.load end - ) - (func $~lib/runtime/runtime.newObject (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 + global.get $std/string-utf8/ptr + i32.const 10 + i32.add i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 360 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 360 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and + call $~lib/string/String.fromUTF8 + i32.const 248 + call $~lib/string/String.__eq + i32.eqz if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 328 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end + i32.const 0 + i32.const 56 + i32.const 28 + i32.const 0 + call $~lib/builtins/abort + unreachable end - local.get $0 ) - (func $~lib/runtime/runtime.collect (; 18 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 328 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 19 ;) (type $FUNCSIG$v) + (func $start (; 9 ;) (type $FUNCSIG$v) call $start:std/string-utf8 ) - (func $null (; 20 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/string-utf8.untouched.wat b/tests/compiler/std/string-utf8.untouched.wat index 2ae5f61b..929127e6 100644 --- a/tests/compiler/std/string-utf8.untouched.wat +++ b/tests/compiler/std/string-utf8.untouched.wat @@ -8,45 +8,29 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 40) "\10\00\00\00$\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00u\00t\00f\008\00.\00t\00s\00") - (data (i32.const 96) "\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 112) "\10\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 160) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 216) "\10\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\01\d87\dc") - (data (i32.const 240) "\10\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00h\00i\00") - (data (i32.const 264) "\10\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00R\d8b\df") - (data (i32.const 288) "\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 312) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 360) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\00\00\00\0e\00\00\00") + (data (i32.const 8) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data (i32.const 40) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00u\00t\00f\008\00.\00t\00s\00") + (data (i32.const 96) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 112) "\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 160) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") + (data (i32.const 184) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00h\00i\00") + (data (i32.const 208) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") + (data (i32.const 232) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/string-utf8/str (mut i32) (i32.const 24)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) (global $std/string-utf8/len (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/string-utf8/ptr (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 360)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 504)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 252)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) (func $~lib/string/String#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u ) @@ -68,20 +52,32 @@ local.get $3 i32.lt_u if - block - local.get $0 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $4 + local.get $4 + i32.const 128 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $2 i32.const 1 - i32.shl i32.add - i32.load16_u - local.set $4 + local.set $2 + else local.get $4 - i32.const 128 + i32.const 2048 i32.lt_u if local.get $1 - i32.const 1 + i32.const 2 i32.add local.set $1 local.get $2 @@ -90,67 +86,53 @@ local.set $2 else local.get $4 - i32.const 2048 - i32.lt_u + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 1 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if (result i32) + local.get $0 + local.get $2 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + else + i32.const 0 + end if local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $2 i32.const 2 i32.add + local.set $2 + else + local.get $1 + i32.const 3 + i32.add local.set $1 local.get $2 i32.const 1 i32.add local.set $2 - else - local.get $4 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) - local.get $2 - i32.const 1 - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end - if (result i32) - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - else - i32.const 0 - end - if - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - else - local.get $1 - i32.const 3 - i32.add - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end end end end @@ -160,48 +142,51 @@ end local.get $1 ) - (func $~lib/allocator/arena/__mem_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -211,22 +196,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -235,16 +220,21 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 + i32.sub + local.set $8 + local.get $8 local.get $1 - ) - (func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.store offset=8 + local.get $8 local.get $0 - call $~lib/allocator/arena/__mem_allocate - return + i32.store offset=12 + local.get $2 ) - (func $~lib/string/String#toUTF8 (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#toUTF8 (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -254,7 +244,8 @@ (local $7 i32) local.get $0 call $~lib/string/String#get:lengthUTF8 - call $~lib/memory/memory.allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.set $1 i32.const 0 local.set $2 @@ -269,25 +260,55 @@ local.get $3 i32.lt_u if - block - local.get $0 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u + if + local.get $1 + local.get $4 + i32.add + local.get $5 + i32.store8 + local.get $4 + i32.const 1 + i32.add + local.set $4 local.get $2 i32.const 1 - i32.shl i32.add - i32.load16_u - local.set $5 + local.set $2 + else local.get $5 - i32.const 128 + i32.const 2048 i32.lt_u if local.get $1 local.get $4 i32.add + local.set $6 + local.get $6 local.get $5 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or i32.store8 + local.get $6 + local.get $5 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 local.get $4 - i32.const 1 + i32.const 2 i32.add local.set $4 local.get $2 @@ -295,158 +316,126 @@ i32.add local.set $2 else + local.get $1 + local.get $4 + i32.add + local.set $6 local.get $5 - i32.const 2048 - i32.lt_u - if - local.get $1 - local.get $4 - i32.add - local.set $6 - local.get $6 - local.get $5 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - i32.store8 - local.get $6 - local.get $5 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $4 - i32.const 2 - i32.add - local.set $4 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) local.get $2 i32.const 1 i32.add - local.set $2 + local.get $3 + i32.lt_u else - local.get $1 - local.get $4 + i32.const 0 + end + if + local.get $0 + local.get $2 + i32.const 1 i32.add - local.set $6 - local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $7 + local.get $7 i32.const 64512 i32.and - i32.const 55296 + i32.const 56320 i32.eq - if (result i32) - local.get $2 - i32.const 1 - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end if - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 1 + i32.const 65536 + local.get $5 + i32.const 1023 + i32.and + i32.const 10 i32.shl i32.add - i32.load16_u - local.set $7 local.get $7 - i32.const 64512 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - i32.const 65536 - local.get $5 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - local.get $7 - i32.const 1023 - i32.and - i32.add - local.set $5 - local.get $6 - local.get $5 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.store8 - local.get $6 - local.get $5 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $6 - local.get $5 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $6 - local.get $5 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=3 - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|0 - end + i32.add + local.set $5 + local.get $6 + local.get $5 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.store8 + local.get $6 + local.get $5 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $6 + local.get $5 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $6 + local.get $5 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=3 + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|0 end - local.get $6 - local.get $5 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - i32.store8 - local.get $6 - local.get $5 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $6 - local.get $5 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $4 - i32.const 3 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 end + local.get $6 + local.get $5 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 + local.get $6 + local.get $5 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $6 + local.get $5 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $4 + i32.const 3 + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.add + local.set $2 end end br $continue|0 @@ -460,120 +449,98 @@ i32.store8 local.get $1 ) - (func $~lib/util/runtime/adjust (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 + (func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl ) - (func $~lib/util/runtime/allocate (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/memory/memory.copy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 br $continue|0 end end end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 br $continue|1 end end @@ -581,95 +548,89 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if - block - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $5 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $5 + local.get $6 end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store br $continue|4 end end @@ -677,16 +638,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -697,50 +658,10 @@ end end ) - (func $~lib/allocator/arena/__mem_free (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__free (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) - (func $~lib/memory/memory.free (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - call $~lib/allocator/arena/__mem_free - ) - (func $~lib/util/runtime/register (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 176 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - ) - (func $~lib/string/String.fromUTF8 (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromUTF8 (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -752,6 +673,7 @@ i32.lt_u if i32.const 112 + call $~lib/rt/stub/__retain return end i32.const 0 @@ -759,7 +681,8 @@ local.get $1 i32.const 1 i32.shl - call $~lib/memory/memory.allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.set $3 i32.const 0 local.set $4 @@ -769,27 +692,79 @@ local.get $1 i32.lt_u if - block - local.get $0 - block (result i32) + local.get $0 + block (result i32) + local.get $2 + local.tee $5 + i32.const 1 + i32.add + local.set $2 + local.get $5 + end + i32.add + i32.load8_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u + if + local.get $3 + local.get $4 + i32.add + local.get $5 + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + else + local.get $5 + i32.const 191 + i32.gt_u + if (result i32) + local.get $5 + i32.const 224 + i32.lt_u + else + i32.const 0 + end + if local.get $2 - local.tee $5 i32.const 1 i32.add - local.set $2 - local.get $5 - end - i32.add - i32.load8_u - local.set $5 - local.get $5 - i32.const 128 - i32.lt_u - if + local.get $1 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 450 + i32.const 8 + call $~lib/builtins/abort + unreachable + end local.get $3 local.get $4 i32.add local.get $5 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $0 + block (result i32) + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + end + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.or i32.store16 local.get $4 i32.const 2 @@ -797,18 +772,18 @@ local.set $4 else local.get $5 - i32.const 191 + i32.const 239 i32.gt_u if (result i32) local.get $5 - i32.const 224 + i32.const 365 i32.lt_u else i32.const 0 end if local.get $2 - i32.const 1 + i32.const 3 i32.add local.get $1 i32.le_u @@ -816,7 +791,102 @@ if i32.const 0 i32.const 128 - i32.const 461 + i32.const 454 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $0 + block (result i32) + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + end + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $0 + block (result i32) + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + end + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $0 + block (result i32) + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + end + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.or + i32.const 65536 + i32.sub + local.set $5 + local.get $3 + local.get $4 + i32.add + i32.const 55296 + local.get $5 + i32.const 10 + i32.shr_u + i32.add + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $3 + local.get $4 + i32.add + i32.const 56320 + local.get $5 + i32.const 1023 + i32.and + i32.add + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + else + local.get $2 + i32.const 2 + i32.add + local.get $1 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 466 i32.const 8 call $~lib/builtins/abort unreachable @@ -825,10 +895,26 @@ local.get $4 i32.add local.get $5 - i32.const 31 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $0 + block (result i32) + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + end + i32.add + i32.load8_u + i32.const 63 i32.and i32.const 6 i32.shl + i32.or local.get $0 block (result i32) local.get $2 @@ -848,171 +934,6 @@ i32.const 2 i32.add local.set $4 - else - local.get $5 - i32.const 239 - i32.gt_u - if (result i32) - local.get $5 - i32.const 365 - i32.lt_u - else - i32.const 0 - end - if - local.get $2 - i32.const 3 - i32.add - local.get $1 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 465 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.const 12 - i32.shl - i32.or - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.or - i32.const 65536 - i32.sub - local.set $5 - local.get $3 - local.get $4 - i32.add - i32.const 55296 - local.get $5 - i32.const 10 - i32.shr_u - i32.add - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - local.get $3 - local.get $4 - i32.add - i32.const 56320 - local.get $5 - i32.const 1023 - i32.and - i32.add - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - else - local.get $2 - i32.const 2 - i32.add - local.get $1 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 477 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.add - local.get $5 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.or - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - end end end end @@ -1027,28 +948,38 @@ if i32.const 0 i32.const 128 - i32.const 486 + i32.const 475 i32.const 4 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/util/runtime/allocate + i32.const 1 + call $~lib/rt/stub/__alloc local.set $7 local.get $7 local.get $3 local.get $4 call $~lib/memory/memory.copy local.get $3 - call $~lib/memory/memory.free + call $~lib/rt/stub/__free local.get $7 - i32.const 16 - call $~lib/util/runtime/register + call $~lib/rt/stub/__retain ) - (func $~lib/util/string/compareImpl (; 13 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/rt/stub/__release (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (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.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop i32.const 0 local.set $5 local.get $0 @@ -1078,33 +1009,50 @@ i32.const 0 end if - block - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 br $continue|0 end end end local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/string/String.__eq (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop 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 @@ -1119,28 +1067,52 @@ 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 $2 - local.get $2 + local.set $3 + local.get $3 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.get $1 + call $~lib/rt/stub/__release + local.get $2 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 + local.get $3 call $~lib/util/string/compareImpl i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $start:std/string-utf8 (; 15 ;) (type $FUNCSIG$v) + (func $start:std/string-utf8 (; 12 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $std/string-utf8/str call $~lib/string/String#get:lengthUTF8 global.set $std/string-utf8/len @@ -1151,21 +1123,21 @@ if i32.const 0 i32.const 56 - i32.const 5 + i32.const 7 i32.const 0 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset global.get $std/string-utf8/str call $~lib/string/String#toUTF8 global.set $std/string-utf8/ptr @@ -1177,7 +1149,7 @@ if i32.const 0 i32.const 56 - i32.const 9 + i32.const 11 i32.const 0 call $~lib/builtins/abort unreachable @@ -1190,7 +1162,7 @@ if i32.const 0 i32.const 56 - i32.const 10 + i32.const 12 i32.const 0 call $~lib/builtins/abort unreachable @@ -1203,7 +1175,7 @@ if i32.const 0 i32.const 56 - i32.const 11 + i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable @@ -1216,7 +1188,7 @@ if i32.const 0 i32.const 56 - i32.const 12 + i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable @@ -1229,7 +1201,7 @@ if i32.const 0 i32.const 56 - i32.const 13 + i32.const 15 i32.const 0 call $~lib/builtins/abort unreachable @@ -1242,7 +1214,7 @@ if i32.const 0 i32.const 56 - i32.const 14 + i32.const 16 i32.const 0 call $~lib/builtins/abort unreachable @@ -1255,7 +1227,7 @@ if i32.const 0 i32.const 56 - i32.const 15 + i32.const 17 i32.const 0 call $~lib/builtins/abort unreachable @@ -1268,7 +1240,7 @@ if i32.const 0 i32.const 56 - i32.const 16 + i32.const 18 i32.const 0 call $~lib/builtins/abort unreachable @@ -1281,7 +1253,7 @@ if i32.const 0 i32.const 56 - i32.const 17 + i32.const 19 i32.const 0 call $~lib/builtins/abort unreachable @@ -1294,7 +1266,7 @@ if i32.const 0 i32.const 56 - i32.const 18 + i32.const 20 i32.const 0 call $~lib/builtins/abort unreachable @@ -1307,7 +1279,7 @@ if i32.const 0 i32.const 56 - i32.const 19 + i32.const 21 i32.const 0 call $~lib/builtins/abort unreachable @@ -1315,39 +1287,10 @@ global.get $std/string-utf8/ptr i32.const 0 call $~lib/string/String.fromUTF8 + local.tee $0 i32.const 112 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 21 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/string-utf8/ptr - global.get $std/string-utf8/len - i32.const 1 - i32.sub - call $~lib/string/String.fromUTF8 - global.get $std/string-utf8/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 22 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/string-utf8/ptr - i32.const 4 - call $~lib/string/String.fromUTF8 - i32.const 232 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 56 @@ -1357,11 +1300,12 @@ unreachable end global.get $std/string-utf8/ptr - i32.const 4 - i32.add - i32.const 2 + global.get $std/string-utf8/len + i32.const 1 + i32.sub call $~lib/string/String.fromUTF8 - i32.const 256 + local.tee $1 + global.get $std/string-utf8/str call $~lib/string/String.__eq i32.eqz if @@ -1373,11 +1317,10 @@ unreachable end global.get $std/string-utf8/ptr - i32.const 6 - i32.add i32.const 4 call $~lib/string/String.fromUTF8 - i32.const 280 + local.tee $2 + i32.const 176 call $~lib/string/String.__eq i32.eqz if @@ -1389,11 +1332,12 @@ unreachable end global.get $std/string-utf8/ptr - i32.const 10 + i32.const 4 i32.add - i32.const 1 + i32.const 2 call $~lib/string/String.fromUTF8 - i32.const 304 + local.tee $3 + i32.const 200 call $~lib/string/String.__eq i32.eqz if @@ -1405,209 +1349,57 @@ unreachable end global.get $std/string-utf8/ptr - call $~lib/memory/memory.free - ) - (func $~lib/runtime/runtime.instanceof (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 - local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 + i32.const 6 + i32.add + i32.const 4 + call $~lib/string/String.fromUTF8 + local.tee $4 + i32.const 224 + call $~lib/string/String.__eq i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) + if + i32.const 0 + i32.const 56 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load end - ) - (func $~lib/runtime/runtime.newObject (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 + global.get $std/string-utf8/ptr + i32.const 10 + i32.add i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 + call $~lib/string/String.fromUTF8 + local.tee $5 + i32.const 248 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 + i32.const 56 + i32.const 28 + i32.const 0 + call $~lib/builtins/abort + unreachable end + global.get $std/string-utf8/ptr + call $~lib/rt/stub/__free local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 + call $~lib/rt/stub/__release local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 + call $~lib/rt/stub/__release local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 328 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release ) - (func $~lib/runtime/runtime.retain (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 25 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 328 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 27 ;) (type $FUNCSIG$v) + (func $start (; 13 ;) (type $FUNCSIG$v) call $start:std/string-utf8 ) - (func $null (; 28 ;) (type $FUNCSIG$v) + (func $null (; 14 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index d20b7737..4c1e75bf 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -2,6 +2,9 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$di (func (param i32) (result f64))) @@ -10,605 +13,1277 @@ (type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) + (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") - (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 108) "\01\00\00\00\10") - (data (i32.const 120) "\02\00\00\00\01\00\00\00\10\00\00\00\02") - (data (i32.const 144) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a") - (data (i32.const 168) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\006") - (data (i32.const 192) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 240) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 264) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00h\00i") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 312) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 344) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00 ") - (data (i32.const 392) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 416) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 440) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 472) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\001\002\003") - (data (i32.const 496) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 528) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") - (data (i32.const 560) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 592) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 624) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") - (data (i32.const 656) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,") - (data (i32.const 680) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00x") - (data (i32.const 704) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 728) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00g") - (data (i32.const 752) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00i") - (data (i32.const 776) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\000") - (data (i32.const 800) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\001") - (data (i32.const 824) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00b\001\000\001") - (data (i32.const 856) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00o\007\000\007") - (data (i32.const 888) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00f\000\00f") - (data (i32.const 920) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00F\000\00F") - (data (i32.const 952) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\001\001") - (data (i32.const 976) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\000\00x\001\00g") - (data (i32.const 1000) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\001") - (data (i32.const 1024) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00.\002\005") - (data (i32.const 1048) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00.\001\00f\00o\00o\00b\00a\00r") - (data (i32.const 1080) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b") - (data (i32.const 1104) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00b") - (data (i32.const 1128) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\001") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\002") - (data (i32.const 1176) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\001") - (data (i32.const 1200) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\002") - (data (i32.const 1224) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\002") - (data (i32.const 1256) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\001") - (data (i32.const 1288) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 1320) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 1352) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") - (data (i32.const 1392) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") - (data (i32.const 1432) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00b\00a") - (data (i32.const 1456) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00a") - (data (i32.const 1480) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 1528) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00a\00a") - (data (i32.const 1552) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") - (data (i32.const 1584) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00a\00a\00a\00a") - (data (i32.const 1616) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") - (data (i32.const 1648) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 1680) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") - (data (i32.const 1728) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00n") - (data (i32.const 1752) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data (i32.const 1784) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data (i32.const 1816) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data (i32.const 1848) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data (i32.const 1896) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1944) "^\00\00\00\01\00\00\00\10\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 2056) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 2112) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 2144) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00.") - (data (i32.const 2168) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00c") - (data (i32.const 2192) "\90\01\00\00\01\00\00\00\0f\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 2608) "\10\00\00\00\01\00\00\00\13\00\00\00\10\00\00\00\a0\08\00\00\a0\08\00\00\90\01\00\00d") - (data (i32.const 2640) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\008") - (data (i32.const 2664) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 2696) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 2720) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 2752) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 2784) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 2816) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 2848) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 2888) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 2928) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2968) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00-\001") - (data (i32.const 2992) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 3016) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 3056) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 3096) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 3128) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 3168) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3208) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3248) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3296) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3344) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3400) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 3456) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 3488) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 3528) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3568) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3616) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3664) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 3720) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 3776) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 3832) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\000") - (data (i32.const 3856) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 3880) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3920) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3952) "\b8\02\00\00\01\00\00\00\0f\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (; 17 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/util/string/parse (; 36 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1353,7 +2626,7 @@ call $~lib/rt/pure/__release f64.const nan:0x8000000000000 ) - (func $~lib/string/parseInt (; 18 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseInt (; 37 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 f64) local.get $0 call $~lib/rt/pure/__retain @@ -1365,7 +2638,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/string/parseFloat (; 19 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 38 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1470,7 +2743,7 @@ end if i32.const 0 - i32.const 208 + i32.const 456 i32.const 572 i32.const 10 call $~lib/builtins/abort @@ -1537,7 +2810,7 @@ call $~lib/rt/pure/__release f64.const nan:0x8000000000000 ) - (func $~lib/string/String#concat (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1548,8 +2821,8 @@ local.get $1 i32.eqz if - i32.const 304 local.get $1 + i32.const 552 call $~lib/rt/pure/__retainRelease local.set $1 end @@ -1585,7 +2858,7 @@ return end local.get $2 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $2 @@ -1602,7 +2875,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__concat (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1611,7 +2884,7 @@ call $~lib/rt/pure/__retain drop local.get $0 - i32.const 304 + i32.const 552 local.get $0 select local.get $1 @@ -1623,7 +2896,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__ne (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1642,7 +2915,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gt (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1716,7 +2989,7 @@ call $~lib/rt/pure/__release i32.const 0 ) - (func $~lib/string/String.__lt (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1790,7 +3063,7 @@ call $~lib/rt/pure/__release i32.const 0 ) - (func $~lib/string/String.__gte (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1809,7 +3082,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lte (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.__lte (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) i32.const 120 call $~lib/rt/pure/__retain @@ -1828,14 +3101,14 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/string/String#repeat (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if i32.const 0 - i32.const 208 + i32.const 456 i32.const 330 i32.const 4 call $~lib/builtins/abort @@ -1863,8 +3136,8 @@ i64.gt_u end if - i32.const 1496 - i32.const 208 + i32.const 1744 + i32.const 456 i32.const 335 i32.const 6 call $~lib/builtins/abort @@ -1893,7 +3166,7 @@ i32.mul i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $0 @@ -1905,7 +3178,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#slice (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.const 16 @@ -1971,7 +3244,7 @@ i32.const 1 i32.shl local.tee $2 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $1 @@ -1984,19 +3257,19 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/rt/__allocArray (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__allocArray (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) i32.const 16 - i32.const 17 + i32.const 3 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 i32.const 2 i32.shl local.tee $2 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $3 call $~lib/rt/pure/__retain @@ -2012,7 +3285,159 @@ i32.store offset=12 local.get $1 ) - (func $~lib/memory/memory.fill (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/reallocateBlock (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 184 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $4 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + local.get $3 + ) + (func $~lib/rt/tlsf/__realloc (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.fill (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -2223,7 +3648,7 @@ end end ) - (func $~lib/array/ensureSize (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureSize (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2239,8 +3664,8 @@ i32.const 268435452 i32.gt_u if - i32.const 1496 - i32.const 1912 + i32.const 1744 + i32.const 2160 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2278,7 +3703,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/string/String>#push (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#push (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -2299,9 +3724,9 @@ i32.shl i32.add local.tee $2 - local.get $1 local.get $2 i32.load + local.get $1 call $~lib/rt/pure/__retainRelease i32.store local.get $0 @@ -2310,7 +3735,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/string/String#split (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#split (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2326,7 +3751,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 456 i32.const 357 i32.const 4 call $~lib/builtins/abort @@ -2400,7 +3825,7 @@ i32.lt_s if i32.const 2 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $4 local.get $2 @@ -2455,7 +3880,7 @@ i32.const 1 i32.shl local.tee $7 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $8 local.get $4 @@ -2506,7 +3931,7 @@ i32.const 1 i32.shl local.tee $3 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $5 local.get $4 @@ -2540,14 +3965,26 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#__get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 7012 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/array/Array<~lib/string/String>#__get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 1960 - i32.const 1912 + i32.const 2208 + i32.const 2160 i32.const 97 i32.const 45 call $~lib/builtins/abort @@ -2560,8 +3997,8 @@ i32.shr_u i32.ge_u if - i32.const 2072 - i32.const 1912 + i32.const 232 + i32.const 2160 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -2576,7 +4013,7 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount32 (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -2630,10 +4067,10 @@ end end ) - (func $~lib/util/number/utoa32_lut (; 36 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - i32.const 2628 + i32.const 2820 i32.load local.set $3 loop $continue|0 @@ -2740,14 +4177,14 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -2768,7 +4205,7 @@ local.tee $3 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $0 @@ -2783,13 +4220,13 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 i32.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -2798,7 +4235,7 @@ local.tee $1 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $0 @@ -2807,7 +4244,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64 (; 39 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 61 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -2861,12 +4298,12 @@ end end ) - (func $~lib/util/number/utoa64_lut (; 40 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 62 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 2628 + i32.const 2820 i32.load local.set $3 loop $continue|0 @@ -2958,14 +4395,14 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 41 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 63 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 i64.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -2980,7 +4417,7 @@ local.tee $3 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $1 @@ -2992,7 +4429,7 @@ local.tee $1 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $2 local.get $0 @@ -3002,7 +4439,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 42 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 64 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3010,7 +4447,7 @@ local.get $0 i64.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -3039,7 +4476,7 @@ local.tee $4 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $2 @@ -3053,7 +4490,7 @@ local.tee $2 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $3 local.get $0 @@ -3069,7 +4506,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/genDigits (; 43 ;) (type $FUNCSIG$iijijiji) (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 (; 65 ;) (type $FUNCSIG$iijijiji) (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 i32) (local $9 i64) @@ -3104,7 +4541,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $4 - i32.const 4996 + i32.const 5188 i32.load local.set $13 loop $continue|0 @@ -3474,7 +4911,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -3725,7 +5162,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 45 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 67 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -3841,7 +5278,7 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 4684 + i32.const 4876 i32.load local.get $3 i32.const 3 @@ -3849,7 +5286,7 @@ i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 4908 + i32.const 5100 i32.load local.get $3 i32.const 1 @@ -4013,14 +5450,14 @@ local.get $10 i32.add ) - (func $~lib/string/String#substring (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 i32.eqz if i32.const 0 - i32.const 208 + i32.const 456 i32.const 196 i32.const 4 call $~lib/builtins/abort @@ -4097,7 +5534,7 @@ return end local.get $2 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 @@ -4108,14 +5545,47 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/dtoa (; 47 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/rt/tlsf/__free (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/util/number/dtoa (; 70 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 f64.const 0 f64.eq if - i32.const 3848 + i32.const 4040 call $~lib/rt/pure/__retain return end @@ -4129,12 +5599,12 @@ local.get $0 f64.ne if - i32.const 3872 + i32.const 4064 call $~lib/rt/pure/__retain return end - i32.const 3896 - i32.const 3936 + i32.const 4088 + i32.const 4128 local.get $0 f64.const 0 f64.lt @@ -4143,7 +5613,7 @@ return end i32.const 56 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.tee $1 local.get $0 @@ -4164,7 +5634,7 @@ call $~lib/rt/tlsf/__free local.get $2 ) - (func $start:std/string (; 48 ;) (type $FUNCSIG$v) + (func $start:std/string (; 71 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4358,7 +5828,7 @@ call $~lib/builtins/abort unreachable end - i32.const 136 + i32.const 384 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -4371,7 +5841,7 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -4387,7 +5857,7 @@ i32.const 0 call $~lib/string/String.fromCharCode local.tee $6 - i32.const 136 + i32.const 384 call $~lib/string/String.__eq i32.eqz if @@ -4401,7 +5871,7 @@ i32.const 54 call $~lib/string/String.fromCharCode local.tee $7 - i32.const 184 + i32.const 432 call $~lib/string/String.__eq i32.eqz if @@ -4415,7 +5885,7 @@ i32.const 65590 call $~lib/string/String.fromCharCode local.tee $8 - i32.const 184 + i32.const 432 call $~lib/string/String.__eq i32.eqz if @@ -4429,7 +5899,7 @@ i32.const 0 call $~lib/string/String.fromCodePoint local.tee $9 - i32.const 136 + i32.const 384 call $~lib/string/String.__eq i32.eqz if @@ -4443,7 +5913,7 @@ i32.const 54 call $~lib/string/String.fromCodePoint local.tee $10 - i32.const 184 + i32.const 432 call $~lib/string/String.__eq i32.eqz if @@ -4459,7 +5929,7 @@ local.tee $11 i32.eqz if - i32.const 256 + i32.const 504 i32.const 72 i32.const 23 i32.const 0 @@ -4489,7 +5959,7 @@ unreachable end global.get $std/string/str - i32.const 360 + i32.const 608 call $~lib/rt/pure/__retain local.tee $0 i32.const 0 @@ -4511,7 +5981,7 @@ end global.get $std/string/str i32.const 0 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $12 global.get $std/string/str @@ -4527,7 +5997,7 @@ end global.get $std/string/str i32.const 15 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $13 global.get $std/string/str @@ -4543,10 +6013,10 @@ end i32.const 120 i32.const 3 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $14 - i32.const 408 + i32.const 656 call $~lib/string/String.__eq i32.eqz if @@ -4573,12 +6043,12 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 100 i32.const 120 call $~lib/string/String#padStart local.tee $16 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -4589,12 +6059,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 5 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $17 - i32.const 456 + i32.const 704 call $~lib/string/String.__eq i32.eqz if @@ -4605,12 +6075,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 6 - i32.const 488 + i32.const 736 call $~lib/string/String#padStart local.tee $18 - i32.const 512 + i32.const 760 call $~lib/string/String.__eq i32.eqz if @@ -4621,12 +6091,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 8 - i32.const 488 + i32.const 736 call $~lib/string/String#padStart local.tee $19 - i32.const 544 + i32.const 792 call $~lib/string/String.__eq i32.eqz if @@ -4639,7 +6109,7 @@ end global.get $std/string/str i32.const 0 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $20 global.get $std/string/str @@ -4655,7 +6125,7 @@ end global.get $std/string/str i32.const 15 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $21 global.get $std/string/str @@ -4671,10 +6141,10 @@ end i32.const 120 i32.const 3 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $22 - i32.const 408 + i32.const 656 call $~lib/string/String.__eq i32.eqz if @@ -4701,12 +6171,12 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 100 i32.const 120 call $~lib/string/String#padEnd local.tee $24 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -4717,12 +6187,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 5 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $25 - i32.const 576 + i32.const 824 call $~lib/string/String.__eq i32.eqz if @@ -4733,12 +6203,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 6 - i32.const 432 + i32.const 680 call $~lib/string/String#padEnd local.tee $26 - i32.const 608 + i32.const 856 call $~lib/string/String.__eq i32.eqz if @@ -4749,12 +6219,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 8 - i32.const 432 + i32.const 680 call $~lib/string/String#padEnd local.tee $27 - i32.const 640 + i32.const 888 call $~lib/string/String.__eq i32.eqz if @@ -4778,7 +6248,7 @@ unreachable end i32.const 120 - i32.const 280 + i32.const 528 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -4791,8 +6261,8 @@ call $~lib/builtins/abort unreachable end - i32.const 160 - i32.const 160 + i32.const 408 + i32.const 408 i32.const 0 call $~lib/string/String#indexOf if @@ -4829,7 +6299,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -4843,7 +6313,7 @@ unreachable end global.get $std/string/str - i32.const 696 + i32.const 944 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -4857,7 +6327,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -4871,7 +6341,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -4885,7 +6355,7 @@ unreachable end global.get $std/string/str - i32.const 720 + i32.const 968 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -4911,7 +6381,7 @@ unreachable end i32.const 120 - i32.const 280 + i32.const 528 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -4944,7 +6414,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 @@ -4958,7 +6428,7 @@ unreachable end global.get $std/string/str - i32.const 696 + i32.const 944 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -4972,7 +6442,7 @@ unreachable end global.get $std/string/str - i32.const 744 + i32.const 992 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 @@ -4986,7 +6456,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -5000,7 +6470,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -5014,7 +6484,7 @@ unreachable end global.get $std/string/str - i32.const 720 + i32.const 968 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -5028,7 +6498,7 @@ unreachable end global.get $std/string/str - i32.const 768 + i32.const 1016 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -5042,7 +6512,7 @@ unreachable end global.get $std/string/str - i32.const 280 + i32.const 528 i32.const 0 call $~lib/string/String#lastIndexOf if @@ -5053,7 +6523,7 @@ call $~lib/builtins/abort unreachable end - i32.const 792 + i32.const 1040 call $~lib/string/parseInt f64.const 0 f64.ne @@ -5065,7 +6535,7 @@ call $~lib/builtins/abort unreachable end - i32.const 816 + i32.const 1064 call $~lib/string/parseInt f64.const 1 f64.ne @@ -5077,7 +6547,7 @@ call $~lib/builtins/abort unreachable end - i32.const 840 + i32.const 1088 call $~lib/string/parseInt f64.const 5 f64.ne @@ -5089,7 +6559,7 @@ call $~lib/builtins/abort unreachable end - i32.const 872 + i32.const 1120 call $~lib/string/parseInt f64.const 455 f64.ne @@ -5101,7 +6571,7 @@ call $~lib/builtins/abort unreachable end - i32.const 904 + i32.const 1152 call $~lib/string/parseInt f64.const 3855 f64.ne @@ -5113,7 +6583,7 @@ call $~lib/builtins/abort unreachable end - i32.const 936 + i32.const 1184 call $~lib/string/parseInt f64.const 3855 f64.ne @@ -5125,7 +6595,7 @@ call $~lib/builtins/abort unreachable end - i32.const 968 + i32.const 1216 call $~lib/string/parseInt f64.const 11 f64.ne @@ -5137,7 +6607,7 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 1240 call $~lib/string/parseInt f64.const 1 f64.ne @@ -5149,7 +6619,7 @@ call $~lib/builtins/abort unreachable end - i32.const 792 + i32.const 1040 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -5161,7 +6631,7 @@ call $~lib/builtins/abort unreachable end - i32.const 816 + i32.const 1064 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -5173,7 +6643,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1016 + i32.const 1264 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -5185,7 +6655,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1288 call $~lib/string/parseFloat f64.const 0.25 f64.ne @@ -5197,7 +6667,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1064 + i32.const 1312 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -5209,13 +6679,13 @@ call $~lib/builtins/abort unreachable end - i32.const 160 - i32.const 1096 + i32.const 408 + i32.const 1344 call $~lib/string/String.__concat local.tee $1 call $~lib/rt/pure/__retain local.tee $0 - i32.const 1120 + i32.const 1368 call $~lib/string/String.__eq i32.eqz if @@ -5227,7 +6697,7 @@ unreachable end local.get $0 - i32.const 160 + i32.const 408 call $~lib/string/String.__ne i32.eqz if @@ -5278,8 +6748,8 @@ call $~lib/builtins/abort unreachable end - i32.const 160 - i32.const 1096 + i32.const 408 + i32.const 1344 call $~lib/string/String.__ne i32.eqz if @@ -5290,8 +6760,8 @@ call $~lib/builtins/abort unreachable end - i32.const 160 - i32.const 160 + i32.const 408 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -5302,8 +6772,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1144 - i32.const 1168 + i32.const 1392 + i32.const 1416 call $~lib/string/String.__ne i32.eqz if @@ -5314,8 +6784,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1144 - i32.const 1144 + i32.const 1392 + i32.const 1392 call $~lib/string/String.__eq i32.eqz if @@ -5326,8 +6796,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1192 - i32.const 1216 + i32.const 1440 + i32.const 1464 call $~lib/string/String.__ne i32.eqz if @@ -5338,8 +6808,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1240 - i32.const 1272 + i32.const 1488 + i32.const 1520 call $~lib/string/String.__ne i32.eqz if @@ -5350,8 +6820,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1304 - i32.const 1304 + i32.const 1552 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if @@ -5362,8 +6832,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1304 - i32.const 1336 + i32.const 1552 + i32.const 1584 call $~lib/string/String.__ne i32.eqz if @@ -5374,8 +6844,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1368 - i32.const 1408 + i32.const 1616 + i32.const 1656 call $~lib/string/String.__ne i32.eqz if @@ -5386,8 +6856,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1096 - i32.const 160 + i32.const 1344 + i32.const 408 call $~lib/string/String.__gt i32.eqz if @@ -5398,8 +6868,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 160 + i32.const 1696 + i32.const 408 call $~lib/string/String.__gt i32.eqz if @@ -5410,8 +6880,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 1472 + i32.const 1696 + i32.const 1720 call $~lib/string/String.__gte i32.eqz if @@ -5422,8 +6892,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 1120 + i32.const 1696 + i32.const 1368 call $~lib/string/String.__gt i32.eqz if @@ -5434,8 +6904,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 1120 + i32.const 1696 + i32.const 1368 call $~lib/string/String.__lt if i32.const 0 @@ -5445,7 +6915,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1096 + i32.const 1344 global.get $std/string/nullStr call $~lib/string/String.__lt if @@ -5457,7 +6927,7 @@ unreachable end global.get $std/string/nullStr - i32.const 1096 + i32.const 1344 call $~lib/string/String.__lt if i32.const 0 @@ -5467,7 +6937,7 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 120 call $~lib/string/String.__gt i32.eqz @@ -5480,7 +6950,7 @@ unreachable end i32.const 120 - i32.const 432 + i32.const 680 call $~lib/string/String.__lt i32.eqz if @@ -5491,7 +6961,7 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 120 call $~lib/string/String.__gte i32.eqz @@ -5503,7 +6973,7 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 call $~lib/string/String.__lte i32.eqz if @@ -5514,7 +6984,7 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 120 call $~lib/string/String.__lt if @@ -5526,7 +6996,7 @@ unreachable end i32.const 120 - i32.const 432 + i32.const 680 call $~lib/string/String.__gt if i32.const 0 @@ -5614,7 +7084,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - i32.const 484 + i32.const 732 i32.load i32.const 1 i32.shr_u @@ -5643,7 +7113,7 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 0 call $~lib/string/String#repeat local.tee $4 @@ -5658,11 +7128,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 1 call $~lib/string/String#repeat local.tee $5 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -5673,11 +7143,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 2 call $~lib/string/String#repeat local.tee $28 - i32.const 1472 + i32.const 1720 call $~lib/string/String.__eq i32.eqz if @@ -5688,11 +7158,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 3 call $~lib/string/String#repeat local.tee $29 - i32.const 1544 + i32.const 1792 call $~lib/string/String.__eq i32.eqz if @@ -5703,11 +7173,11 @@ call $~lib/builtins/abort unreachable end - i32.const 1120 + i32.const 1368 i32.const 4 call $~lib/string/String#repeat local.tee $30 - i32.const 1568 + i32.const 1816 call $~lib/string/String.__eq i32.eqz if @@ -5718,11 +7188,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 5 call $~lib/string/String#repeat local.tee $31 - i32.const 1600 + i32.const 1848 call $~lib/string/String.__eq i32.eqz if @@ -5733,11 +7203,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 6 call $~lib/string/String#repeat local.tee $32 - i32.const 1632 + i32.const 1880 call $~lib/string/String.__eq i32.eqz if @@ -5748,11 +7218,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 7 call $~lib/string/String#repeat local.tee $33 - i32.const 1664 + i32.const 1912 call $~lib/string/String.__eq i32.eqz if @@ -5763,8 +7233,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1696 global.get $std/string/str + i32.const 1944 call $~lib/rt/pure/__retainRelease global.set $std/string/str global.get $std/string/str @@ -5772,7 +7242,7 @@ i32.const 2147483647 call $~lib/string/String#slice local.tee $34 - i32.const 1696 + i32.const 1944 call $~lib/string/String.__eq i32.eqz if @@ -5788,7 +7258,7 @@ i32.const 2147483647 call $~lib/string/String#slice local.tee $35 - i32.const 1744 + i32.const 1992 call $~lib/string/String.__eq i32.eqz if @@ -5804,7 +7274,7 @@ i32.const 2147483647 call $~lib/string/String#slice local.tee $36 - i32.const 1768 + i32.const 2016 call $~lib/string/String.__eq i32.eqz if @@ -5820,7 +7290,7 @@ i32.const 7 call $~lib/string/String#slice local.tee $37 - i32.const 1800 + i32.const 2048 call $~lib/string/String.__eq i32.eqz if @@ -5836,7 +7306,7 @@ i32.const -6 call $~lib/string/String#slice local.tee $38 - i32.const 1832 + i32.const 2080 call $~lib/string/String.__eq i32.eqz if @@ -5868,7 +7338,7 @@ i32.const -1 call $~lib/string/String#slice local.tee $40 - i32.const 1864 + i32.const 2112 call $~lib/string/String.__eq i32.eqz if @@ -5880,10 +7350,10 @@ unreachable end i32.const 0 - call $~lib/rt/pure/__release i32.const 120 i32.const 0 call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.tee $1 i32.load offset=12 i32.const 1 @@ -5913,10 +7383,10 @@ unreachable end local.get $1 - call $~lib/rt/pure/__release i32.const 120 i32.const 120 call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.tee $0 i32.load offset=12 if @@ -5928,10 +7398,10 @@ unreachable end local.get $0 - call $~lib/rt/pure/__release i32.const 120 - i32.const 672 + i32.const 920 call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.tee $1 i32.load offset=12 i32.const 1 @@ -5961,10 +7431,10 @@ unreachable end local.get $1 - call $~lib/rt/pure/__release - i32.const 2128 - i32.const 2160 + i32.const 2320 + i32.const 2352 call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.tee $1 i32.load offset=12 i32.const 1 @@ -5974,7 +7444,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $2 - i32.const 2128 + i32.const 2320 call $~lib/string/String.__eq local.set $0 local.get $2 @@ -5994,10 +7464,10 @@ unreachable end local.get $1 - call $~lib/rt/pure/__release - i32.const 2128 - i32.const 672 + i32.const 2320 + i32.const 920 call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.tee $1 i32.load offset=12 i32.const 3 @@ -6007,7 +7477,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $2 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq local.set $0 local.get $2 @@ -6022,7 +7492,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $2 - i32.const 1096 + i32.const 1344 call $~lib/string/String.__eq local.set $0 local.get $2 @@ -6037,7 +7507,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $2 - i32.const 2184 + i32.const 2376 call $~lib/string/String.__eq local.set $0 local.get $2 @@ -6061,7 +7531,7 @@ i32.const 0 call $~lib/util/number/itoa32 local.tee $0 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -6075,7 +7545,7 @@ i32.const 1 call $~lib/util/number/itoa32 local.tee $1 - i32.const 816 + i32.const 1064 call $~lib/string/String.__eq i32.eqz if @@ -6089,7 +7559,7 @@ i32.const 8 call $~lib/util/number/itoa32 local.tee $2 - i32.const 2656 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if @@ -6103,7 +7573,7 @@ i32.const 123 call $~lib/util/number/itoa32 local.tee $41 - i32.const 488 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -6117,7 +7587,7 @@ i32.const -1000 call $~lib/util/number/itoa32 local.tee $42 - i32.const 2680 + i32.const 2872 call $~lib/string/String.__eq i32.eqz if @@ -6131,7 +7601,7 @@ i32.const 1234 call $~lib/util/number/itoa32 local.tee $43 - i32.const 2712 + i32.const 2904 call $~lib/string/String.__eq i32.eqz if @@ -6145,7 +7615,7 @@ i32.const 12345 call $~lib/util/number/itoa32 local.tee $44 - i32.const 2736 + i32.const 2928 call $~lib/string/String.__eq i32.eqz if @@ -6159,7 +7629,7 @@ i32.const 123456 call $~lib/util/number/itoa32 local.tee $45 - i32.const 2768 + i32.const 2960 call $~lib/string/String.__eq i32.eqz if @@ -6173,7 +7643,7 @@ i32.const 1111111 call $~lib/util/number/itoa32 local.tee $46 - i32.const 2800 + i32.const 2992 call $~lib/string/String.__eq i32.eqz if @@ -6187,7 +7657,7 @@ i32.const 1234567 call $~lib/util/number/itoa32 local.tee $47 - i32.const 2832 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if @@ -6201,7 +7671,7 @@ i32.const 2147483646 call $~lib/util/number/itoa32 local.tee $48 - i32.const 2864 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if @@ -6215,7 +7685,7 @@ i32.const 2147483647 call $~lib/util/number/itoa32 local.tee $49 - i32.const 2904 + i32.const 3096 call $~lib/string/String.__eq i32.eqz if @@ -6229,7 +7699,7 @@ i32.const -2147483648 call $~lib/util/number/itoa32 local.tee $50 - i32.const 2944 + i32.const 3136 call $~lib/string/String.__eq i32.eqz if @@ -6243,7 +7713,7 @@ i32.const -1 call $~lib/util/number/itoa32 local.tee $51 - i32.const 2984 + i32.const 3176 call $~lib/string/String.__eq i32.eqz if @@ -6257,7 +7727,7 @@ i32.const 0 call $~lib/util/number/utoa32 local.tee $52 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -6271,7 +7741,7 @@ i32.const 1000 call $~lib/util/number/utoa32 local.tee $53 - i32.const 3008 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if @@ -6285,7 +7755,7 @@ i32.const 2147483647 call $~lib/util/number/utoa32 local.tee $54 - i32.const 2904 + i32.const 3096 call $~lib/string/String.__eq i32.eqz if @@ -6299,7 +7769,7 @@ i32.const -2147483648 call $~lib/util/number/utoa32 local.tee $55 - i32.const 3032 + i32.const 3224 call $~lib/string/String.__eq i32.eqz if @@ -6313,7 +7783,7 @@ i32.const -1 call $~lib/util/number/utoa32 local.tee $56 - i32.const 3072 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -6327,7 +7797,7 @@ i64.const 0 call $~lib/util/number/utoa64 local.tee $57 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -6341,7 +7811,7 @@ i64.const 1234 call $~lib/util/number/utoa64 local.tee $58 - i32.const 2712 + i32.const 2904 call $~lib/string/String.__eq i32.eqz if @@ -6355,7 +7825,7 @@ i64.const 99999999 call $~lib/util/number/utoa64 local.tee $59 - i32.const 3112 + i32.const 3304 call $~lib/string/String.__eq i32.eqz if @@ -6369,7 +7839,7 @@ i64.const 100000000 call $~lib/util/number/utoa64 local.tee $60 - i32.const 3144 + i32.const 3336 call $~lib/string/String.__eq i32.eqz if @@ -6383,7 +7853,7 @@ i64.const 4294967295 call $~lib/util/number/utoa64 local.tee $61 - i32.const 3072 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -6397,7 +7867,7 @@ i64.const 68719476735 call $~lib/util/number/utoa64 local.tee $62 - i32.const 3184 + i32.const 3376 call $~lib/string/String.__eq i32.eqz if @@ -6411,7 +7881,7 @@ i64.const 868719476735 call $~lib/util/number/utoa64 local.tee $63 - i32.const 3224 + i32.const 3416 call $~lib/string/String.__eq i32.eqz if @@ -6425,7 +7895,7 @@ i64.const 999868719476735 call $~lib/util/number/utoa64 local.tee $64 - i32.const 3264 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if @@ -6439,7 +7909,7 @@ i64.const 9999868719476735 call $~lib/util/number/utoa64 local.tee $65 - i32.const 3312 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if @@ -6453,7 +7923,7 @@ i64.const 19999868719476735 call $~lib/util/number/utoa64 local.tee $66 - i32.const 3360 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if @@ -6467,7 +7937,7 @@ i64.const -1 call $~lib/util/number/utoa64 local.tee $67 - i32.const 3416 + i32.const 3608 call $~lib/string/String.__eq i32.eqz if @@ -6481,7 +7951,7 @@ i64.const 0 call $~lib/util/number/itoa64 local.tee $68 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -6495,7 +7965,7 @@ i64.const -1234 call $~lib/util/number/itoa64 local.tee $69 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if @@ -6509,7 +7979,7 @@ i64.const 4294967295 call $~lib/util/number/itoa64 local.tee $70 - i32.const 3072 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -6523,7 +7993,7 @@ i64.const -4294967295 call $~lib/util/number/itoa64 local.tee $71 - i32.const 3504 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if @@ -6537,7 +8007,7 @@ i64.const 68719476735 call $~lib/util/number/itoa64 local.tee $72 - i32.const 3184 + i32.const 3376 call $~lib/string/String.__eq i32.eqz if @@ -6551,7 +8021,7 @@ i64.const -68719476735 call $~lib/util/number/itoa64 local.tee $73 - i32.const 3544 + i32.const 3736 call $~lib/string/String.__eq i32.eqz if @@ -6565,7 +8035,7 @@ i64.const -868719476735 call $~lib/util/number/itoa64 local.tee $74 - i32.const 3584 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -6579,7 +8049,7 @@ i64.const -999868719476735 call $~lib/util/number/itoa64 local.tee $75 - i32.const 3632 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if @@ -6593,7 +8063,7 @@ i64.const -19999868719476735 call $~lib/util/number/itoa64 local.tee $76 - i32.const 3680 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if @@ -6607,7 +8077,7 @@ i64.const 9223372036854775807 call $~lib/util/number/itoa64 local.tee $77 - i32.const 3736 + i32.const 3928 call $~lib/string/String.__eq i32.eqz if @@ -6621,7 +8091,7 @@ i64.const -9223372036854775808 call $~lib/util/number/itoa64 local.tee $78 - i32.const 3792 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if @@ -6635,7 +8105,7 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $79 - i32.const 3848 + i32.const 4040 call $~lib/string/String.__eq i32.eqz if @@ -6649,7 +8119,7 @@ f64.const -0 call $~lib/util/number/dtoa local.tee $80 - i32.const 3848 + i32.const 4040 call $~lib/string/String.__eq i32.eqz if @@ -6663,7 +8133,7 @@ f64.const nan:0x8000000000000 call $~lib/util/number/dtoa local.tee $81 - i32.const 3872 + i32.const 4064 call $~lib/string/String.__eq i32.eqz if @@ -6677,7 +8147,7 @@ f64.const inf call $~lib/util/number/dtoa local.tee $82 - i32.const 3936 + i32.const 4128 call $~lib/string/String.__eq i32.eqz if @@ -6691,7 +8161,7 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $83 - i32.const 3896 + i32.const 4088 call $~lib/string/String.__eq i32.eqz if @@ -6705,7 +8175,7 @@ f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $84 - i32.const 5024 + i32.const 5216 call $~lib/string/String.__eq i32.eqz if @@ -6719,7 +8189,7 @@ f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $85 - i32.const 5088 + i32.const 5280 call $~lib/string/String.__eq i32.eqz if @@ -6733,7 +8203,7 @@ f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $86 - i32.const 5152 + i32.const 5344 call $~lib/string/String.__eq i32.eqz if @@ -6747,7 +8217,7 @@ f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $87 - i32.const 5216 + i32.const 5408 call $~lib/string/String.__eq i32.eqz if @@ -6761,7 +8231,7 @@ f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.tee $88 - i32.const 5280 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if @@ -6775,7 +8245,7 @@ f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa local.tee $89 - i32.const 5344 + i32.const 5536 call $~lib/string/String.__eq i32.eqz if @@ -6789,7 +8259,7 @@ f64.const 4.940656e-318 call $~lib/util/number/dtoa local.tee $90 - i32.const 5408 + i32.const 5600 call $~lib/string/String.__eq i32.eqz if @@ -6803,7 +8273,7 @@ f64.const 9060801153433600 call $~lib/util/number/dtoa local.tee $91 - i32.const 5456 + i32.const 5648 call $~lib/string/String.__eq i32.eqz if @@ -6817,7 +8287,7 @@ f64.const 4708356024711512064 call $~lib/util/number/dtoa local.tee $92 - i32.const 5512 + i32.const 5704 call $~lib/string/String.__eq i32.eqz if @@ -6831,7 +8301,7 @@ f64.const 9409340012568248320 call $~lib/util/number/dtoa local.tee $93 - i32.const 5576 + i32.const 5768 call $~lib/string/String.__eq i32.eqz if @@ -6845,7 +8315,7 @@ f64.const 5e-324 call $~lib/util/number/dtoa local.tee $94 - i32.const 5640 + i32.const 5832 call $~lib/string/String.__eq i32.eqz if @@ -6859,7 +8329,7 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $95 - i32.const 5672 + i32.const 5864 call $~lib/string/String.__eq i32.eqz if @@ -6873,7 +8343,7 @@ f64.const 0.1 call $~lib/util/number/dtoa local.tee $96 - i32.const 1016 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -6887,7 +8357,7 @@ f64.const -1 call $~lib/util/number/dtoa local.tee $97 - i32.const 5696 + i32.const 5888 call $~lib/string/String.__eq i32.eqz if @@ -6901,7 +8371,7 @@ f64.const -0.1 call $~lib/util/number/dtoa local.tee $98 - i32.const 5720 + i32.const 5912 call $~lib/string/String.__eq i32.eqz if @@ -6915,7 +8385,7 @@ f64.const 1e6 call $~lib/util/number/dtoa local.tee $99 - i32.const 5744 + i32.const 5936 call $~lib/string/String.__eq i32.eqz if @@ -6929,7 +8399,7 @@ f64.const 1e-06 call $~lib/util/number/dtoa local.tee $100 - i32.const 5784 + i32.const 5976 call $~lib/string/String.__eq i32.eqz if @@ -6943,7 +8413,7 @@ f64.const -1e6 call $~lib/util/number/dtoa local.tee $101 - i32.const 5816 + i32.const 6008 call $~lib/string/String.__eq i32.eqz if @@ -6957,7 +8427,7 @@ f64.const -1e-06 call $~lib/util/number/dtoa local.tee $102 - i32.const 5856 + i32.const 6048 call $~lib/string/String.__eq i32.eqz if @@ -6971,7 +8441,7 @@ f64.const 1e7 call $~lib/util/number/dtoa local.tee $103 - i32.const 5896 + i32.const 6088 call $~lib/string/String.__eq i32.eqz if @@ -6985,7 +8455,7 @@ f64.const 1e-07 call $~lib/util/number/dtoa local.tee $104 - i32.const 5936 + i32.const 6128 call $~lib/string/String.__eq i32.eqz if @@ -6999,7 +8469,7 @@ f64.const 1.e+308 call $~lib/util/number/dtoa local.tee $105 - i32.const 5960 + i32.const 6152 call $~lib/string/String.__eq i32.eqz if @@ -7013,7 +8483,7 @@ f64.const -1.e+308 call $~lib/util/number/dtoa local.tee $106 - i32.const 5992 + i32.const 6184 call $~lib/string/String.__eq i32.eqz if @@ -7027,7 +8497,7 @@ f64.const inf call $~lib/util/number/dtoa local.tee $107 - i32.const 3936 + i32.const 4128 call $~lib/string/String.__eq i32.eqz if @@ -7041,7 +8511,7 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $108 - i32.const 3896 + i32.const 4088 call $~lib/string/String.__eq i32.eqz if @@ -7055,7 +8525,7 @@ f64.const 1e-308 call $~lib/util/number/dtoa local.tee $109 - i32.const 6024 + i32.const 6216 call $~lib/string/String.__eq i32.eqz if @@ -7069,7 +8539,7 @@ f64.const -1e-308 call $~lib/util/number/dtoa local.tee $110 - i32.const 6056 + i32.const 6248 call $~lib/string/String.__eq i32.eqz if @@ -7083,7 +8553,7 @@ f64.const 1e-323 call $~lib/util/number/dtoa local.tee $111 - i32.const 6088 + i32.const 6280 call $~lib/string/String.__eq i32.eqz if @@ -7097,7 +8567,7 @@ f64.const -1e-323 call $~lib/util/number/dtoa local.tee $112 - i32.const 6120 + i32.const 6312 call $~lib/string/String.__eq i32.eqz if @@ -7111,7 +8581,7 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $113 - i32.const 3848 + i32.const 4040 call $~lib/string/String.__eq i32.eqz if @@ -7125,7 +8595,7 @@ f64.const 4294967272 call $~lib/util/number/dtoa local.tee $114 - i32.const 6152 + i32.const 6344 call $~lib/string/String.__eq i32.eqz if @@ -7139,7 +8609,7 @@ f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa local.tee $115 - i32.const 6192 + i32.const 6384 call $~lib/string/String.__eq i32.eqz if @@ -7153,7 +8623,7 @@ f64.const 555555555.5555556 call $~lib/util/number/dtoa local.tee $116 - i32.const 6256 + i32.const 6448 call $~lib/string/String.__eq i32.eqz if @@ -7167,7 +8637,7 @@ f64.const 0.9999999999999999 call $~lib/util/number/dtoa local.tee $117 - i32.const 6312 + i32.const 6504 call $~lib/string/String.__eq i32.eqz if @@ -7181,7 +8651,7 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $118 - i32.const 5672 + i32.const 5864 call $~lib/string/String.__eq i32.eqz if @@ -7195,7 +8665,7 @@ f64.const 12.34 call $~lib/util/number/dtoa local.tee $119 - i32.const 6368 + i32.const 6560 call $~lib/string/String.__eq i32.eqz if @@ -7209,7 +8679,7 @@ f64.const 0.3333333333333333 call $~lib/util/number/dtoa local.tee $120 - i32.const 6400 + i32.const 6592 call $~lib/string/String.__eq i32.eqz if @@ -7223,7 +8693,7 @@ f64.const 1234e17 call $~lib/util/number/dtoa local.tee $121 - i32.const 6456 + i32.const 6648 call $~lib/string/String.__eq i32.eqz if @@ -7237,7 +8707,7 @@ f64.const 1234e18 call $~lib/util/number/dtoa local.tee $122 - i32.const 6520 + i32.const 6712 call $~lib/string/String.__eq i32.eqz if @@ -7251,7 +8721,7 @@ f64.const 2.71828 call $~lib/util/number/dtoa local.tee $123 - i32.const 6560 + i32.const 6752 call $~lib/string/String.__eq i32.eqz if @@ -7265,7 +8735,7 @@ f64.const 0.0271828 call $~lib/util/number/dtoa local.tee $124 - i32.const 6592 + i32.const 6784 call $~lib/string/String.__eq i32.eqz if @@ -7279,7 +8749,7 @@ f64.const 271.828 call $~lib/util/number/dtoa local.tee $125 - i32.const 6632 + i32.const 6824 call $~lib/string/String.__eq i32.eqz if @@ -7293,7 +8763,7 @@ f64.const 1.1e+128 call $~lib/util/number/dtoa local.tee $126 - i32.const 6664 + i32.const 6856 call $~lib/string/String.__eq i32.eqz if @@ -7307,7 +8777,7 @@ f64.const 1.1e-64 call $~lib/util/number/dtoa local.tee $127 - i32.const 6696 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -7321,7 +8791,7 @@ f64.const 0.000035689 call $~lib/util/number/dtoa local.tee $128 - i32.const 6728 + i32.const 6920 call $~lib/string/String.__eq i32.eqz if @@ -7593,1507 +9063,13 @@ local.get $128 call $~lib/rt/pure/__release ) - (func $std/string/getString (; 49 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 72 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $start (; 50 ;) (type $FUNCSIG$v) + (func $start (; 73 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $~lib/rt/tlsf/removeBlock (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $2 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $3 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $2 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=20 - local.set $4 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $4 - i32.store offset=20 - end - local.get $4 - if - local.get $4 - local.get $5 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.get $1 - i32.eq - if - local.get $3 - i32.const 4 - i32.shl - local.get $2 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $4 - i32.store offset=96 - local.get $4 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $2 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.tee $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $3 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $2 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 3 - i32.and - local.get $2 - i32.or - local.tee $3 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $5 - end - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $2 - i32.load - local.tee $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $7 - i32.const 1073741808 - i32.lt_u - if (result i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $3 - i32.store - local.get $2 - else - local.get $1 - end - local.set $1 - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - i32.const 16 - i32.ge_u - if (result i32) - local.get $2 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - i32.ne - if - i32.const 0 - i32.const 6768 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $4 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $4 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $3 - i32.const 23 - i32.lt_u - if (result i32) - local.get $4 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.set $2 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $2 - i32.store offset=20 - local.get $2 - if - local.get $2 - local.get $1 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $1 - i32.store offset=96 - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - local.get $2 - i32.le_u - select - select - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=1568 - local.tee $3 - if - local.get $1 - local.get $3 - i32.const 16 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 6768 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $3 - i32.eq - if - local.get $3 - i32.load - local.set $4 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.lt_u - if - i32.const 0 - i32.const 6768 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $4 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.tee $2 - i32.const 2 - i32.store - local.get $0 - local.get $2 - i32.store offset=1568 - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/tlsf/initializeRoot (; 54 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - current_memory - local.tee $0 - i32.gt_s - if (result i32) - i32.const 1 - local.get $0 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 7120 - i32.const 0 - i32.store - i32.const 8688 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 7120 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 7120 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 7120 - i32.const 8704 - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 7120 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 6816 - i32.const 6768 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $1 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const -1 - local.get $1 - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - local.get $0 - i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.tee $1 - if (result i32) - local.get $1 - i32.ctz - local.tee $1 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.ctz - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - else - i32.const 0 - end - end - ) - (func $~lib/rt/tlsf/growMemory (; 57 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - current_memory - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $1 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $0 - local.get $2 - i32.const 16 - i32.shl - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 58 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - if - i32.const 0 - i32.const 6768 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - i32.load - i32.const -4 - i32.and - local.get $3 - i32.lt_u - if - i32.const 0 - i32.const 6768 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/reallocateBlock (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.tee $4 - i32.const 1 - i32.and - if - i32.const 0 - i32.const 6768 - i32.const 491 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $6 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $4 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.tee $3 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $3 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - local.get $3 - ) - (func $~lib/rt/tlsf/__realloc (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 552 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 553 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/freeBlock (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.tee $2 - i32.const 1 - i32.and - if - i32.const 0 - i32.const 6768 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/rt/tlsf/__free (; 64 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 560 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 561 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/increment (; 65 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -268435456 - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const -268435456 - i32.and - i32.ne - if - i32.const 0 - i32.const 6872 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 6872 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 7120 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/__typeinfo (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 6944 - i32.load - i32.gt_u - else - i32.const 1 - end - if - i32.const 2072 - i32.const 6920 - i32.const 23 - i32.const 34 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 6944 - i32.add - i32.load - ) - (func $~lib/rt/pure/growRoots (; 68 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $2 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - local.tee $0 - i32.const 256 - local.get $0 - i32.const 256 - i32.gt_u - select - local.tee $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $2 - local.get $1 - call $~lib/memory/memory.copy - local.get $0 - global.set $~lib/rt/pure/ROOTS - local.get $0 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $0 - local.get $3 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.tee $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 70 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 - local.get $0 - call $~lib/rt/pure/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 6872 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $2 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $1 - i32.const 0 - i32.le_u - if - i32.const 0 - i32.const 6872 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $1 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $2 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - end - end - ) - (func $~lib/rt/pure/__retainRelease (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.ne - if - local.get $0 - i32.const 7120 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $1 - i32.const 7120 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (; 72 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 7120 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 73 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $0 - loop $continue|0 - local.get $2 - local.get $0 - i32.lt_u - if - local.get $2 - i32.load - local.tee $3 - if - local.get $3 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - ) (func $~lib/rt/pure/markGray (; 74 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 @@ -9195,7 +9171,7 @@ ) (func $~lib/rt/pure/__visit (; 78 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - i32.const 7120 + i32.const 7012 i32.lt_u if return @@ -9238,7 +9214,7 @@ i32.le_u if i32.const 0 - i32.const 6872 + i32.const 136 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -9271,7 +9247,7 @@ i32.ne if i32.const 0 - i32.const 6872 + i32.const 136 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -9296,33 +9272,63 @@ br $break|0 end i32.const 0 - i32.const 6872 + i32.const 136 i32.const 96 i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $block$16$break - block $switch$1$case$19 - block $switch$1$case$3 - block $switch$1$default + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $0 + loop $continue|0 + local.get $2 + local.get $0 + i32.lt_u + if + local.get $2 + i32.load + local.tee $3 + if + local.get $3 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + ) + (func $~lib/rt/__visit_members (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$4$break + block $switch$1$default + block $switch$1$case$5 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - i32.const 1 - i32.sub - br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $block$16$break $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $block$16$break $block$16$break $block$16$break $block$16$break $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $switch$1$case$5 $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default end - unreachable + return end - return + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit_impl + br $block$4$break end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl + unreachable end local.get $0 i32.load @@ -9333,7 +9339,7 @@ call $~lib/rt/pure/__visit end ) - (func $null (; 80 ;) (type $FUNCSIG$v) + (func $null (; 81 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 3429f118..8c8275af 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -2,9 +2,12 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$di (func (param i32) (result f64))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) @@ -14,176 +17,177 @@ (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) + (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 104) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 120) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\00\00") - (data (i32.const 144) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a\00") - (data (i32.const 168) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\006\00") - (data (i32.const 192) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 240) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 264) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 312) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 344) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00I\00\'\00m\00") - (data (i32.const 368) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00 \00") - (data (i32.const 392) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00 \00 \00 \00") - (data (i32.const 416) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 440) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") - (data (i32.const 472) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 496) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 528) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") - (data (i32.const 560) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") - (data (i32.const 592) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 624) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") - (data (i32.const 656) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,\00") - (data (i32.const 680) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00x\00") - (data (i32.const 704) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00,\00 \00I\00") - (data (i32.const 728) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00g\00") - (data (i32.const 752) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00i\00") - (data (i32.const 776) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\000\00") - (data (i32.const 800) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\001\00") - (data (i32.const 824) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00b\001\000\001\00") - (data (i32.const 856) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00o\007\000\007\00") - (data (i32.const 888) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00f\000\00f\00") - (data (i32.const 920) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00F\000\00F\00") - (data (i32.const 952) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\001\001\00") - (data (i32.const 976) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\000\00x\001\00g\00") - (data (i32.const 1000) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\001\00") - (data (i32.const 1024) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00.\002\005\00") - (data (i32.const 1048) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00.\001\00f\00o\00o\00b\00a\00r\00") - (data (i32.const 1080) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b\00") - (data (i32.const 1104) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 1128) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\001\00") - (data (i32.const 1152) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\002\00") - (data (i32.const 1176) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\001\00") - (data (i32.const 1200) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\002\00") - (data (i32.const 1224) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\002\00") - (data (i32.const 1256) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\001\00") - (data (i32.const 1288) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") - (data (i32.const 1320) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 1352) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 1392) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 1432) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 1456) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00a\00") - (data (i32.const 1480) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 1528) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00a\00a\00") - (data (i32.const 1552) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00") - (data (i32.const 1584) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00a\00a\00a\00a\00") - (data (i32.const 1616) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 1648) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 1680) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") - (data (i32.const 1728) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00n\00") - (data (i32.const 1752) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00j\00k\00l\00m\00n\00") - (data (i32.const 1784) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00c\00d\00e\00f\00g\00") - (data (i32.const 1816) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00e\00f\00g\00h\00") - (data (i32.const 1848) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") - (data (i32.const 1896) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 1944) "^\00\00\00\01\00\00\00\10\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 2056) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 2112) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 2144) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00.\00") - (data (i32.const 2168) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00c\00") - (data (i32.const 2192) "\90\01\00\00\01\00\00\00\0f\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 2608) "\10\00\00\00\01\00\00\00\13\00\00\00\10\00\00\00\a0\08\00\00\a0\08\00\00\90\01\00\00d\00\00\00") - (data (i32.const 2640) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\008\00") - (data (i32.const 2664) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\000\000\000\00") - (data (i32.const 2696) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\002\003\004\00") - (data (i32.const 2720) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\001\002\003\004\005\00") - (data (i32.const 2752) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 2784) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 2816) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 2848) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 2888) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 2928) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 2968) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00-\001\00") - (data (i32.const 2992) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\000\000\000\00") - (data (i32.const 3016) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 3056) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3096) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 3128) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 3168) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3208) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3248) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3296) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3344) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3400) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 3456) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\002\003\004\00") - (data (i32.const 3488) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3528) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3568) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3616) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3664) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3720) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 3776) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") - (data (i32.const 3832) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 3856) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 3880) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3920) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3952) "\b8\02\00\00\01\00\00\00\0f\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (; 19 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/util/string/parse (; 38 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local $3 f64) (local $4 i32) @@ -1633,7 +3302,7 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/string/parseInt (; 20 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 39 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (local $2 f64) local.get $0 call $~lib/rt/pure/__retain @@ -1646,7 +3315,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/parseFloat (; 21 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 40 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) (local $3 i32) @@ -1786,7 +3455,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 456 i32.const 572 i32.const 10 call $~lib/builtins/abort @@ -1857,7 +3526,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String#concat (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1870,8 +3539,8 @@ i32.const 0 i32.eq if - i32.const 304 local.get $1 + i32.const 552 call $~lib/rt/pure/__retainRelease local.set $1 end @@ -1902,7 +3571,7 @@ return end local.get $4 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $6 @@ -1922,7 +3591,7 @@ call $~lib/rt/pure/__release local.get $5 ) - (func $~lib/string/String.__concat (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1931,7 +3600,7 @@ call $~lib/rt/pure/__retain drop local.get $0 - i32.const 304 + i32.const 552 local.get $0 i32.const 0 i32.ne @@ -1945,7 +3614,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__ne (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1964,7 +3633,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gt (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2054,7 +3723,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lt (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2144,7 +3813,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__gte (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -2163,7 +3832,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__lte (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lte (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -2182,7 +3851,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String#repeat (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2191,7 +3860,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 456 i32.const 330 i32.const 4 call $~lib/builtins/abort @@ -2215,8 +3884,8 @@ i64.gt_u end if - i32.const 1496 - i32.const 208 + i32.const 1744 + i32.const 456 i32.const 335 i32.const 6 call $~lib/builtins/abort @@ -2249,7 +3918,7 @@ i32.mul i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $3 local.get $3 @@ -2262,7 +3931,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#slice (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2337,7 +4006,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -2353,7 +4022,7 @@ local.get $8 call $~lib/rt/pure/__retain ) - (func $~lib/rt/__allocArray (; 31 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 50 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2366,7 +4035,7 @@ i32.shl local.set $5 local.get $5 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.set $6 local.get $4 @@ -2391,7 +4060,182 @@ end local.get $4 ) - (func $~lib/memory/memory.fill (; 32 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/reallocateBlock (; 51 ;) (type $FUNCSIG$iiii) (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.get $2 + call $~lib/rt/tlsf/prepareSize + local.set $3 + local.get $1 + i32.load + local.set $4 + local.get $4 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 491 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $4 + i32.const -4 + i32.and + i32.le_u + if + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + local.get $2 + i32.store offset=12 + local.get $1 + return + end + block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $6 + local.get $6 + i32.load + local.set $7 + local.get $7 + i32.const 1 + i32.and + if + local.get $4 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $5 + local.get $5 + local.get $3 + i32.ge_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $4 + i32.const 3 + i32.and + local.get $5 + i32.or + i32.store + local.get $1 + local.get $2 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $1 + return + end + end + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.set $8 + local.get $8 + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $8 + local.get $1 + i32.load offset=8 + i32.store offset=8 + local.get $8 + i32.const 16 + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + local.get $8 + ) + (func $~lib/rt/tlsf/__realloc (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 552 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 553 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + local.get $1 + call $~lib/rt/tlsf/reallocateBlock + i32.const 16 + i32.add + ) + (func $~lib/memory/memory.fill (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2654,7 +4498,7 @@ end end ) - (func $~lib/array/ensureSize (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2674,8 +4518,8 @@ i32.shr_u i32.gt_u if - i32.const 1496 - i32.const 1912 + i32.const 1744 + i32.const 2160 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2717,7 +4561,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/string/String>#push (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2743,9 +4587,9 @@ i32.add local.set $4 local.get $4 - local.get $1 local.get $4 i32.load + local.get $1 call $~lib/rt/pure/__retainRelease i32.store local.get $0 @@ -2757,7 +4601,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#split (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2778,7 +4622,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 456 i32.const 357 i32.const 4 call $~lib/builtins/abort @@ -2789,7 +4633,7 @@ if i32.const 0 i32.const 2 - i32.const 17 + i32.const 3 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -2806,7 +4650,7 @@ block (result i32) i32.const 1 i32.const 2 - i32.const 17 + i32.const 3 i32.const 0 call $~lib/rt/__allocArray local.set $3 @@ -2847,7 +4691,7 @@ if i32.const 0 i32.const 2 - i32.const 17 + i32.const 3 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -2868,7 +4712,7 @@ local.set $5 local.get $5 i32.const 2 - i32.const 17 + i32.const 3 i32.const 0 call $~lib/rt/__allocArray local.set $4 @@ -2885,7 +4729,7 @@ i32.eqz br_if $break|0 i32.const 2 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $8 local.get $8 @@ -2928,7 +4772,7 @@ if i32.const 1 i32.const 2 - i32.const 17 + i32.const 3 i32.const 0 call $~lib/rt/__allocArray local.set $3 @@ -2947,7 +4791,7 @@ end i32.const 0 i32.const 2 - i32.const 17 + i32.const 3 i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain @@ -2979,7 +4823,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 @@ -3049,7 +4893,7 @@ local.get $13 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $3 local.get $3 @@ -3078,11 +4922,23 @@ call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__skippedRelease (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3092,14 +4948,14 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 1960 - i32.const 1912 + i32.const 2208 + i32.const 2160 i32.const 97 i32.const 45 call $~lib/builtins/abort @@ -3112,8 +4968,8 @@ i32.shr_u i32.ge_u if - i32.const 2072 - i32.const 1912 + i32.const 232 + i32.const 2160 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -3123,7 +4979,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $~lib/util/number/decimalCount32 (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -3192,7 +5048,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa32_lut (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 62 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3200,7 +5056,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 2624 + i32.const 2816 i32.load offset=4 local.set $3 block $break|0 @@ -3333,7 +5189,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3343,7 +5199,7 @@ local.get $0 i32.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -3366,7 +5222,7 @@ local.get $2 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $3 block $~lib/util/number/utoa32_core|inlined.0 @@ -3390,7 +5246,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3399,7 +5255,7 @@ local.get $0 i32.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -3409,7 +5265,7 @@ local.get $1 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 block $~lib/util/number/utoa32_core|inlined.1 @@ -3427,7 +5283,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/decimalCount64 (; 43 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 65 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -3496,7 +5352,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 44 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 66 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -3508,7 +5364,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 2624 + i32.const 2816 i32.load offset=4 local.set $3 block $break|0 @@ -3622,7 +5478,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 67 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3633,7 +5489,7 @@ local.get $0 i64.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -3650,7 +5506,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 block $~lib/util/number/utoa32_core|inlined.2 @@ -3672,7 +5528,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 block $~lib/util/number/utoa64_core|inlined.0 @@ -3691,7 +5547,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa64 (; 46 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 68 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3703,7 +5559,7 @@ local.get $0 i64.eqz if - i32.const 792 + i32.const 1040 call $~lib/rt/pure/__retain return end @@ -3733,7 +5589,7 @@ local.get $4 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 block $~lib/util/number/utoa32_core|inlined.3 @@ -3757,7 +5613,7 @@ local.get $4 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 block $~lib/util/number/utoa64_core|inlined.1 @@ -3782,19 +5638,19 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/builtins/isFinite (; 47 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 69 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/builtins/isNaN (; 48 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 70 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/array/Array#__unchecked_get (; 49 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 71 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -3803,7 +5659,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__unchecked_get (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3812,7 +5668,7 @@ i32.add i32.load16_s ) - (func $~lib/util/number/genDigits (; 51 ;) (type $FUNCSIG$iijijiji) (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 (; 73 ;) (type $FUNCSIG$iijijiji) (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) @@ -3867,7 +5723,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 4992 + i32.const 5184 i32.load offset=4 local.set $16 block $break|0 @@ -4368,7 +6224,7 @@ end local.get $15 ) - (func $~lib/util/number/prettify (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4698,7 +6554,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 53 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 75 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -4867,11 +6723,11 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 4680 + i32.const 4872 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_frc_pow - i32.const 4904 + i32.const 5096 local.get $13 call $~lib/array/Array#__unchecked_get global.set $~lib/util/number/_exp_pow @@ -5136,7 +6992,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 54 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5151,7 +7007,7 @@ i32.eqz if i32.const 0 - i32.const 208 + i32.const 456 i32.const 196 i32.const 4 call $~lib/builtins/abort @@ -5243,7 +7099,7 @@ return end local.get $3 - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $10 local.get $10 @@ -5255,7 +7111,44 @@ local.get $10 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/dtoa (; 55 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/rt/tlsf/__free (; 77 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/util/number/dtoa (; 78 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5263,7 +7156,7 @@ f64.const 0 f64.eq if - i32.const 3848 + i32.const 4040 call $~lib/rt/pure/__retain return end @@ -5274,12 +7167,12 @@ local.get $0 call $~lib/builtins/isNaN if - i32.const 3872 + i32.const 4064 call $~lib/rt/pure/__retain return end - i32.const 3896 - i32.const 3936 + i32.const 4088 + i32.const 4128 local.get $0 f64.const 0 f64.lt @@ -5290,7 +7183,7 @@ i32.const 28 i32.const 1 i32.shl - i32.const 16 + i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 local.get $1 @@ -5314,7 +7207,7 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $start:std/string (; 56 ;) (type $FUNCSIG$v) + (func $start:std/string (; 79 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5497,7 +7390,7 @@ call $~lib/builtins/abort unreachable end - i32.const 136 + i32.const 384 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -5511,7 +7404,7 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 call $~lib/string/String.__not i32.eqz i32.const 1 @@ -5528,7 +7421,7 @@ i32.const 0 call $~lib/string/String.fromCharCode local.tee $0 - i32.const 136 + i32.const 384 call $~lib/string/String.__eq i32.eqz if @@ -5542,7 +7435,7 @@ i32.const 54 call $~lib/string/String.fromCharCode local.tee $1 - i32.const 184 + i32.const 432 call $~lib/string/String.__eq i32.eqz if @@ -5558,7 +7451,7 @@ i32.add call $~lib/string/String.fromCharCode local.tee $2 - i32.const 184 + i32.const 432 call $~lib/string/String.__eq i32.eqz if @@ -5572,7 +7465,7 @@ i32.const 0 call $~lib/string/String.fromCodePoint local.tee $3 - i32.const 136 + i32.const 384 call $~lib/string/String.__eq i32.eqz if @@ -5586,7 +7479,7 @@ i32.const 54 call $~lib/string/String.fromCodePoint local.tee $4 - i32.const 184 + i32.const 432 call $~lib/string/String.__eq i32.eqz if @@ -5602,7 +7495,7 @@ local.tee $5 i32.eqz if - i32.const 256 + i32.const 504 i32.const 72 i32.const 23 i32.const 0 @@ -5610,7 +7503,7 @@ unreachable end global.get $std/string/str - i32.const 280 + i32.const 528 i32.const 0 call $~lib/string/String#startsWith i32.eqz @@ -5623,7 +7516,7 @@ unreachable end global.get $std/string/str - i32.const 328 + i32.const 576 global.get $~lib/string/String.MAX_LENGTH call $~lib/string/String#endsWith i32.eqz @@ -5638,7 +7531,7 @@ block $~lib/string/String#includes|inlined.0 (result i32) global.get $std/string/str local.set $8 - i32.const 360 + i32.const 608 call $~lib/rt/pure/__retain local.set $7 i32.const 0 @@ -5667,7 +7560,7 @@ end global.get $std/string/str i32.const 0 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $6 global.get $std/string/str @@ -5683,7 +7576,7 @@ end global.get $std/string/str i32.const 15 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $7 global.get $std/string/str @@ -5699,10 +7592,10 @@ end i32.const 120 i32.const 3 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $8 - i32.const 408 + i32.const 656 call $~lib/string/String.__eq i32.eqz if @@ -5729,12 +7622,12 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 100 i32.const 120 call $~lib/string/String#padStart local.tee $10 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -5745,12 +7638,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 5 - i32.const 384 + i32.const 632 call $~lib/string/String#padStart local.tee $11 - i32.const 456 + i32.const 704 call $~lib/string/String.__eq i32.eqz if @@ -5761,12 +7654,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 6 - i32.const 488 + i32.const 736 call $~lib/string/String#padStart local.tee $12 - i32.const 512 + i32.const 760 call $~lib/string/String.__eq i32.eqz if @@ -5777,12 +7670,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 8 - i32.const 488 + i32.const 736 call $~lib/string/String#padStart local.tee $13 - i32.const 544 + i32.const 792 call $~lib/string/String.__eq i32.eqz if @@ -5795,7 +7688,7 @@ end global.get $std/string/str i32.const 0 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $14 global.get $std/string/str @@ -5811,7 +7704,7 @@ end global.get $std/string/str i32.const 15 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $15 global.get $std/string/str @@ -5827,10 +7720,10 @@ end i32.const 120 i32.const 3 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $16 - i32.const 408 + i32.const 656 call $~lib/string/String.__eq i32.eqz if @@ -5857,12 +7750,12 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 100 i32.const 120 call $~lib/string/String#padEnd local.tee $18 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -5873,12 +7766,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 5 - i32.const 384 + i32.const 632 call $~lib/string/String#padEnd local.tee $19 - i32.const 576 + i32.const 824 call $~lib/string/String.__eq i32.eqz if @@ -5889,12 +7782,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 6 - i32.const 432 + i32.const 680 call $~lib/string/String#padEnd local.tee $20 - i32.const 608 + i32.const 856 call $~lib/string/String.__eq i32.eqz if @@ -5905,12 +7798,12 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 8 - i32.const 432 + i32.const 680 call $~lib/string/String#padEnd local.tee $21 - i32.const 640 + i32.const 888 call $~lib/string/String.__eq i32.eqz if @@ -5937,7 +7830,7 @@ unreachable end i32.const 120 - i32.const 280 + i32.const 528 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -5951,8 +7844,8 @@ call $~lib/builtins/abort unreachable end - i32.const 160 - i32.const 160 + i32.const 408 + i32.const 408 i32.const 0 call $~lib/string/String#indexOf i32.const 0 @@ -5997,7 +7890,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -6012,7 +7905,7 @@ unreachable end global.get $std/string/str - i32.const 696 + i32.const 944 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -6027,7 +7920,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -6042,7 +7935,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -6057,7 +7950,7 @@ unreachable end global.get $std/string/str - i32.const 720 + i32.const 968 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -6087,7 +7980,7 @@ unreachable end i32.const 120 - i32.const 280 + i32.const 528 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const -1 @@ -6118,7 +8011,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 2 @@ -6133,7 +8026,7 @@ unreachable end global.get $std/string/str - i32.const 696 + i32.const 944 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const -1 @@ -6148,7 +8041,7 @@ unreachable end global.get $std/string/str - i32.const 744 + i32.const 992 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#lastIndexOf i32.const 15 @@ -6163,7 +8056,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -6178,7 +8071,7 @@ unreachable end global.get $std/string/str - i32.const 672 + i32.const 920 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -6193,7 +8086,7 @@ unreachable end global.get $std/string/str - i32.const 720 + i32.const 968 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -6208,7 +8101,7 @@ unreachable end global.get $std/string/str - i32.const 768 + i32.const 1016 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -6223,7 +8116,7 @@ unreachable end global.get $std/string/str - i32.const 280 + i32.const 528 i32.const 0 call $~lib/string/String#lastIndexOf i32.const 0 @@ -6237,7 +8130,7 @@ call $~lib/builtins/abort unreachable end - i32.const 792 + i32.const 1040 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -6251,7 +8144,7 @@ call $~lib/builtins/abort unreachable end - i32.const 816 + i32.const 1064 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -6265,7 +8158,7 @@ call $~lib/builtins/abort unreachable end - i32.const 840 + i32.const 1088 i32.const 0 call $~lib/string/parseInt f64.const 5 @@ -6279,7 +8172,7 @@ call $~lib/builtins/abort unreachable end - i32.const 872 + i32.const 1120 i32.const 0 call $~lib/string/parseInt f64.const 455 @@ -6293,7 +8186,7 @@ call $~lib/builtins/abort unreachable end - i32.const 904 + i32.const 1152 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -6307,7 +8200,7 @@ call $~lib/builtins/abort unreachable end - i32.const 936 + i32.const 1184 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -6321,7 +8214,7 @@ call $~lib/builtins/abort unreachable end - i32.const 968 + i32.const 1216 i32.const 0 call $~lib/string/parseInt f64.const 11 @@ -6335,7 +8228,7 @@ call $~lib/builtins/abort unreachable end - i32.const 992 + i32.const 1240 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -6349,7 +8242,7 @@ call $~lib/builtins/abort unreachable end - i32.const 792 + i32.const 1040 call $~lib/string/parseFloat f64.const 0 f64.eq @@ -6362,7 +8255,7 @@ call $~lib/builtins/abort unreachable end - i32.const 816 + i32.const 1064 call $~lib/string/parseFloat f64.const 1 f64.eq @@ -6375,7 +8268,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1016 + i32.const 1264 call $~lib/string/parseFloat f64.const 0.1 f64.eq @@ -6388,7 +8281,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1040 + i32.const 1288 call $~lib/string/parseFloat f64.const 0.25 f64.eq @@ -6401,7 +8294,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1064 + i32.const 1312 call $~lib/string/parseFloat f64.const 0.1 f64.eq @@ -6415,14 +8308,14 @@ unreachable end block - i32.const 160 - i32.const 1096 + i32.const 408 + i32.const 1344 call $~lib/string/String.__concat local.tee $22 call $~lib/rt/pure/__retain local.set $23 local.get $23 - i32.const 1120 + i32.const 1368 call $~lib/string/String.__eq i32.eqz if @@ -6434,7 +8327,7 @@ unreachable end local.get $23 - i32.const 160 + i32.const 408 call $~lib/string/String.__ne i32.eqz if @@ -6486,8 +8379,8 @@ call $~lib/builtins/abort unreachable end - i32.const 160 - i32.const 1096 + i32.const 408 + i32.const 1344 call $~lib/string/String.__ne i32.eqz if @@ -6498,8 +8391,8 @@ call $~lib/builtins/abort unreachable end - i32.const 160 - i32.const 160 + i32.const 408 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -6510,8 +8403,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1144 - i32.const 1168 + i32.const 1392 + i32.const 1416 call $~lib/string/String.__ne i32.eqz if @@ -6522,8 +8415,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1144 - i32.const 1144 + i32.const 1392 + i32.const 1392 call $~lib/string/String.__eq i32.eqz if @@ -6534,8 +8427,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1192 - i32.const 1216 + i32.const 1440 + i32.const 1464 call $~lib/string/String.__ne i32.eqz if @@ -6546,8 +8439,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1240 - i32.const 1272 + i32.const 1488 + i32.const 1520 call $~lib/string/String.__ne i32.eqz if @@ -6558,8 +8451,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1304 - i32.const 1304 + i32.const 1552 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if @@ -6570,8 +8463,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1304 - i32.const 1336 + i32.const 1552 + i32.const 1584 call $~lib/string/String.__ne i32.eqz if @@ -6582,8 +8475,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1368 - i32.const 1408 + i32.const 1616 + i32.const 1656 call $~lib/string/String.__ne i32.eqz if @@ -6594,8 +8487,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1096 - i32.const 160 + i32.const 1344 + i32.const 408 call $~lib/string/String.__gt i32.eqz if @@ -6606,8 +8499,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 160 + i32.const 1696 + i32.const 408 call $~lib/string/String.__gt i32.eqz if @@ -6618,8 +8511,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 1472 + i32.const 1696 + i32.const 1720 call $~lib/string/String.__gte i32.eqz if @@ -6630,8 +8523,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 1120 + i32.const 1696 + i32.const 1368 call $~lib/string/String.__gt i32.eqz if @@ -6642,8 +8535,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1448 - i32.const 1120 + i32.const 1696 + i32.const 1368 call $~lib/string/String.__lt i32.eqz i32.eqz @@ -6655,7 +8548,7 @@ call $~lib/builtins/abort unreachable end - i32.const 1096 + i32.const 1344 global.get $std/string/nullStr call $~lib/string/String.__lt i32.eqz @@ -6669,7 +8562,7 @@ unreachable end global.get $std/string/nullStr - i32.const 1096 + i32.const 1344 call $~lib/string/String.__lt i32.eqz i32.eqz @@ -6681,7 +8574,7 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 120 call $~lib/string/String.__gt i32.eqz @@ -6694,7 +8587,7 @@ unreachable end i32.const 120 - i32.const 432 + i32.const 680 call $~lib/string/String.__lt i32.eqz if @@ -6705,7 +8598,7 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 120 call $~lib/string/String.__gte i32.eqz @@ -6718,7 +8611,7 @@ unreachable end i32.const 120 - i32.const 432 + i32.const 680 call $~lib/string/String.__lte i32.eqz if @@ -6729,7 +8622,7 @@ call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 680 i32.const 120 call $~lib/string/String.__lt i32.eqz @@ -6743,7 +8636,7 @@ unreachable end i32.const 120 - i32.const 432 + i32.const 680 call $~lib/string/String.__gt i32.eqz i32.eqz @@ -6842,7 +8735,7 @@ local.get $26 call $~lib/rt/pure/__release end - i32.const 488 + i32.const 736 call $~lib/string/String#get:length i32.const 3 i32.eq @@ -6870,7 +8763,7 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 0 call $~lib/string/String#repeat local.tee $25 @@ -6885,11 +8778,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 1 call $~lib/string/String#repeat local.tee $24 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq i32.eqz if @@ -6900,11 +8793,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 2 call $~lib/string/String#repeat local.tee $22 - i32.const 1472 + i32.const 1720 call $~lib/string/String.__eq i32.eqz if @@ -6915,11 +8808,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 3 call $~lib/string/String#repeat local.tee $23 - i32.const 1544 + i32.const 1792 call $~lib/string/String.__eq i32.eqz if @@ -6930,11 +8823,11 @@ call $~lib/builtins/abort unreachable end - i32.const 1120 + i32.const 1368 i32.const 4 call $~lib/string/String#repeat local.tee $27 - i32.const 1568 + i32.const 1816 call $~lib/string/String.__eq i32.eqz if @@ -6945,11 +8838,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 5 call $~lib/string/String#repeat local.tee $28 - i32.const 1600 + i32.const 1848 call $~lib/string/String.__eq i32.eqz if @@ -6960,11 +8853,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 6 call $~lib/string/String#repeat local.tee $29 - i32.const 1632 + i32.const 1880 call $~lib/string/String.__eq i32.eqz if @@ -6975,11 +8868,11 @@ call $~lib/builtins/abort unreachable end - i32.const 160 + i32.const 408 i32.const 7 call $~lib/string/String#repeat local.tee $30 - i32.const 1664 + i32.const 1912 call $~lib/string/String.__eq i32.eqz if @@ -6990,8 +8883,8 @@ call $~lib/builtins/abort unreachable end - i32.const 1696 global.get $std/string/str + i32.const 1944 call $~lib/rt/pure/__retainRelease global.set $std/string/str global.get $std/string/str @@ -6999,7 +8892,7 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice local.tee $31 - i32.const 1696 + i32.const 1944 call $~lib/string/String.__eq i32.eqz if @@ -7015,7 +8908,7 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice local.tee $32 - i32.const 1744 + i32.const 1992 call $~lib/string/String.__eq i32.eqz if @@ -7031,7 +8924,7 @@ global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#slice local.tee $33 - i32.const 1768 + i32.const 2016 call $~lib/string/String.__eq i32.eqz if @@ -7047,7 +8940,7 @@ i32.const 7 call $~lib/string/String#slice local.tee $34 - i32.const 1800 + i32.const 2048 call $~lib/string/String.__eq i32.eqz if @@ -7063,7 +8956,7 @@ i32.const -6 call $~lib/string/String#slice local.tee $35 - i32.const 1832 + i32.const 2080 call $~lib/string/String.__eq i32.eqz if @@ -7095,7 +8988,7 @@ i32.const -1 call $~lib/string/String#slice local.tee $37 - i32.const 1864 + i32.const 2112 call $~lib/string/String.__eq i32.eqz if @@ -7109,14 +9002,12 @@ block i32.const 0 local.set $38 - block (result i32) - local.get $38 - call $~lib/rt/pure/__release - i32.const 120 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end + local.get $38 + i32.const 120 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.set $38 local.get $38 call $~lib/array/Array<~lib/string/String>#get:length @@ -7147,14 +9038,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $38 - call $~lib/rt/pure/__release - i32.const 120 - i32.const 120 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end + local.get $38 + i32.const 120 + i32.const 120 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.set $38 local.get $38 call $~lib/array/Array<~lib/string/String>#get:length @@ -7169,14 +9058,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $38 - call $~lib/rt/pure/__release - i32.const 120 - i32.const 672 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end + local.get $38 + i32.const 120 + i32.const 920 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.set $38 local.get $38 call $~lib/array/Array<~lib/string/String>#get:length @@ -7207,14 +9094,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $38 - call $~lib/rt/pure/__release - i32.const 2128 - i32.const 2160 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end + local.get $38 + i32.const 2320 + i32.const 2352 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.set $38 local.get $38 call $~lib/array/Array<~lib/string/String>#get:length @@ -7225,7 +9110,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $39 - i32.const 2128 + i32.const 2320 call $~lib/string/String.__eq local.set $40 local.get $39 @@ -7245,14 +9130,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $38 - call $~lib/rt/pure/__release - i32.const 2128 - i32.const 672 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end + local.get $38 + i32.const 2320 + i32.const 920 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + call $~lib/rt/pure/__skippedRelease local.set $38 local.get $38 call $~lib/array/Array<~lib/string/String>#get:length @@ -7263,7 +9146,7 @@ i32.const 0 call $~lib/array/Array<~lib/string/String>#__get local.tee $39 - i32.const 160 + i32.const 408 call $~lib/string/String.__eq local.set $40 local.get $39 @@ -7279,7 +9162,7 @@ i32.const 1 call $~lib/array/Array<~lib/string/String>#__get local.tee $39 - i32.const 1096 + i32.const 1344 call $~lib/string/String.__eq local.set $40 local.get $39 @@ -7295,7 +9178,7 @@ i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.tee $39 - i32.const 2184 + i32.const 2376 call $~lib/string/String.__eq local.set $40 local.get $39 @@ -7321,7 +9204,7 @@ i32.const 0 call $~lib/util/number/itoa32 local.tee $38 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -7335,7 +9218,7 @@ i32.const 1 call $~lib/util/number/itoa32 local.tee $39 - i32.const 816 + i32.const 1064 call $~lib/string/String.__eq i32.eqz if @@ -7349,7 +9232,7 @@ i32.const 8 call $~lib/util/number/itoa32 local.tee $40 - i32.const 2656 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if @@ -7363,7 +9246,7 @@ i32.const 123 call $~lib/util/number/itoa32 local.tee $41 - i32.const 488 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -7377,7 +9260,7 @@ i32.const -1000 call $~lib/util/number/itoa32 local.tee $42 - i32.const 2680 + i32.const 2872 call $~lib/string/String.__eq i32.eqz if @@ -7391,7 +9274,7 @@ i32.const 1234 call $~lib/util/number/itoa32 local.tee $43 - i32.const 2712 + i32.const 2904 call $~lib/string/String.__eq i32.eqz if @@ -7405,7 +9288,7 @@ i32.const 12345 call $~lib/util/number/itoa32 local.tee $44 - i32.const 2736 + i32.const 2928 call $~lib/string/String.__eq i32.eqz if @@ -7419,7 +9302,7 @@ i32.const 123456 call $~lib/util/number/itoa32 local.tee $45 - i32.const 2768 + i32.const 2960 call $~lib/string/String.__eq i32.eqz if @@ -7433,7 +9316,7 @@ i32.const 1111111 call $~lib/util/number/itoa32 local.tee $46 - i32.const 2800 + i32.const 2992 call $~lib/string/String.__eq i32.eqz if @@ -7447,7 +9330,7 @@ i32.const 1234567 call $~lib/util/number/itoa32 local.tee $47 - i32.const 2832 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if @@ -7461,7 +9344,7 @@ i32.const 2147483646 call $~lib/util/number/itoa32 local.tee $48 - i32.const 2864 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if @@ -7475,7 +9358,7 @@ i32.const 2147483647 call $~lib/util/number/itoa32 local.tee $49 - i32.const 2904 + i32.const 3096 call $~lib/string/String.__eq i32.eqz if @@ -7489,7 +9372,7 @@ i32.const -2147483648 call $~lib/util/number/itoa32 local.tee $50 - i32.const 2944 + i32.const 3136 call $~lib/string/String.__eq i32.eqz if @@ -7503,7 +9386,7 @@ i32.const -1 call $~lib/util/number/itoa32 local.tee $51 - i32.const 2984 + i32.const 3176 call $~lib/string/String.__eq i32.eqz if @@ -7517,7 +9400,7 @@ i32.const 0 call $~lib/util/number/utoa32 local.tee $52 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -7531,7 +9414,7 @@ i32.const 1000 call $~lib/util/number/utoa32 local.tee $53 - i32.const 3008 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if @@ -7545,7 +9428,7 @@ i32.const 2147483647 call $~lib/util/number/utoa32 local.tee $54 - i32.const 2904 + i32.const 3096 call $~lib/string/String.__eq i32.eqz if @@ -7559,7 +9442,7 @@ i32.const -2147483648 call $~lib/util/number/utoa32 local.tee $55 - i32.const 3032 + i32.const 3224 call $~lib/string/String.__eq i32.eqz if @@ -7573,7 +9456,7 @@ global.get $~lib/builtins/u32.MAX_VALUE call $~lib/util/number/utoa32 local.tee $56 - i32.const 3072 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -7587,7 +9470,7 @@ i64.const 0 call $~lib/util/number/utoa64 local.tee $57 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -7601,7 +9484,7 @@ i64.const 1234 call $~lib/util/number/utoa64 local.tee $58 - i32.const 2712 + i32.const 2904 call $~lib/string/String.__eq i32.eqz if @@ -7615,7 +9498,7 @@ i64.const 99999999 call $~lib/util/number/utoa64 local.tee $59 - i32.const 3112 + i32.const 3304 call $~lib/string/String.__eq i32.eqz if @@ -7629,7 +9512,7 @@ i64.const 100000000 call $~lib/util/number/utoa64 local.tee $60 - i32.const 3144 + i32.const 3336 call $~lib/string/String.__eq i32.eqz if @@ -7643,7 +9526,7 @@ i64.const 4294967295 call $~lib/util/number/utoa64 local.tee $61 - i32.const 3072 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -7657,7 +9540,7 @@ i64.const 68719476735 call $~lib/util/number/utoa64 local.tee $62 - i32.const 3184 + i32.const 3376 call $~lib/string/String.__eq i32.eqz if @@ -7671,7 +9554,7 @@ i64.const 868719476735 call $~lib/util/number/utoa64 local.tee $63 - i32.const 3224 + i32.const 3416 call $~lib/string/String.__eq i32.eqz if @@ -7685,7 +9568,7 @@ i64.const 999868719476735 call $~lib/util/number/utoa64 local.tee $64 - i32.const 3264 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if @@ -7699,7 +9582,7 @@ i64.const 9999868719476735 call $~lib/util/number/utoa64 local.tee $65 - i32.const 3312 + i32.const 3504 call $~lib/string/String.__eq i32.eqz if @@ -7713,7 +9596,7 @@ i64.const 19999868719476735 call $~lib/util/number/utoa64 local.tee $66 - i32.const 3360 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if @@ -7727,7 +9610,7 @@ global.get $~lib/builtins/u64.MAX_VALUE call $~lib/util/number/utoa64 local.tee $67 - i32.const 3416 + i32.const 3608 call $~lib/string/String.__eq i32.eqz if @@ -7741,7 +9624,7 @@ i64.const 0 call $~lib/util/number/itoa64 local.tee $68 - i32.const 792 + i32.const 1040 call $~lib/string/String.__eq i32.eqz if @@ -7755,7 +9638,7 @@ i64.const -1234 call $~lib/util/number/itoa64 local.tee $69 - i32.const 3472 + i32.const 3664 call $~lib/string/String.__eq i32.eqz if @@ -7769,7 +9652,7 @@ i64.const 4294967295 call $~lib/util/number/itoa64 local.tee $70 - i32.const 3072 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -7783,7 +9666,7 @@ i64.const -4294967295 call $~lib/util/number/itoa64 local.tee $71 - i32.const 3504 + i32.const 3696 call $~lib/string/String.__eq i32.eqz if @@ -7797,7 +9680,7 @@ i64.const 68719476735 call $~lib/util/number/itoa64 local.tee $72 - i32.const 3184 + i32.const 3376 call $~lib/string/String.__eq i32.eqz if @@ -7811,7 +9694,7 @@ i64.const -68719476735 call $~lib/util/number/itoa64 local.tee $73 - i32.const 3544 + i32.const 3736 call $~lib/string/String.__eq i32.eqz if @@ -7825,7 +9708,7 @@ i64.const -868719476735 call $~lib/util/number/itoa64 local.tee $74 - i32.const 3584 + i32.const 3776 call $~lib/string/String.__eq i32.eqz if @@ -7839,7 +9722,7 @@ i64.const -999868719476735 call $~lib/util/number/itoa64 local.tee $75 - i32.const 3632 + i32.const 3824 call $~lib/string/String.__eq i32.eqz if @@ -7853,7 +9736,7 @@ i64.const -19999868719476735 call $~lib/util/number/itoa64 local.tee $76 - i32.const 3680 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if @@ -7867,7 +9750,7 @@ global.get $~lib/builtins/i64.MAX_VALUE call $~lib/util/number/itoa64 local.tee $77 - i32.const 3736 + i32.const 3928 call $~lib/string/String.__eq i32.eqz if @@ -7881,7 +9764,7 @@ global.get $~lib/builtins/i64.MIN_VALUE call $~lib/util/number/itoa64 local.tee $78 - i32.const 3792 + i32.const 3984 call $~lib/string/String.__eq i32.eqz if @@ -7895,7 +9778,7 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $79 - i32.const 3848 + i32.const 4040 call $~lib/string/String.__eq i32.eqz if @@ -7909,7 +9792,7 @@ f64.const -0 call $~lib/util/number/dtoa local.tee $80 - i32.const 3848 + i32.const 4040 call $~lib/string/String.__eq i32.eqz if @@ -7923,7 +9806,7 @@ f64.const nan:0x8000000000000 call $~lib/util/number/dtoa local.tee $81 - i32.const 3872 + i32.const 4064 call $~lib/string/String.__eq i32.eqz if @@ -7937,7 +9820,7 @@ f64.const inf call $~lib/util/number/dtoa local.tee $82 - i32.const 3936 + i32.const 4128 call $~lib/string/String.__eq i32.eqz if @@ -7952,7 +9835,7 @@ f64.neg call $~lib/util/number/dtoa local.tee $83 - i32.const 3896 + i32.const 4088 call $~lib/string/String.__eq i32.eqz if @@ -7966,7 +9849,7 @@ global.get $~lib/builtins/f64.EPSILON call $~lib/util/number/dtoa local.tee $84 - i32.const 5024 + i32.const 5216 call $~lib/string/String.__eq i32.eqz if @@ -7981,7 +9864,7 @@ f64.neg call $~lib/util/number/dtoa local.tee $85 - i32.const 5088 + i32.const 5280 call $~lib/string/String.__eq i32.eqz if @@ -7995,7 +9878,7 @@ global.get $~lib/builtins/f64.MAX_VALUE call $~lib/util/number/dtoa local.tee $86 - i32.const 5152 + i32.const 5344 call $~lib/string/String.__eq i32.eqz if @@ -8010,7 +9893,7 @@ f64.neg call $~lib/util/number/dtoa local.tee $87 - i32.const 5216 + i32.const 5408 call $~lib/string/String.__eq i32.eqz if @@ -8024,7 +9907,7 @@ f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa local.tee $88 - i32.const 5280 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if @@ -8038,7 +9921,7 @@ f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa local.tee $89 - i32.const 5344 + i32.const 5536 call $~lib/string/String.__eq i32.eqz if @@ -8052,7 +9935,7 @@ f64.const 4.940656e-318 call $~lib/util/number/dtoa local.tee $90 - i32.const 5408 + i32.const 5600 call $~lib/string/String.__eq i32.eqz if @@ -8066,7 +9949,7 @@ f64.const 9060801153433600 call $~lib/util/number/dtoa local.tee $91 - i32.const 5456 + i32.const 5648 call $~lib/string/String.__eq i32.eqz if @@ -8080,7 +9963,7 @@ f64.const 4708356024711512064 call $~lib/util/number/dtoa local.tee $92 - i32.const 5512 + i32.const 5704 call $~lib/string/String.__eq i32.eqz if @@ -8094,7 +9977,7 @@ f64.const 9409340012568248320 call $~lib/util/number/dtoa local.tee $93 - i32.const 5576 + i32.const 5768 call $~lib/string/String.__eq i32.eqz if @@ -8108,7 +9991,7 @@ f64.const 5e-324 call $~lib/util/number/dtoa local.tee $94 - i32.const 5640 + i32.const 5832 call $~lib/string/String.__eq i32.eqz if @@ -8122,7 +10005,7 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $95 - i32.const 5672 + i32.const 5864 call $~lib/string/String.__eq i32.eqz if @@ -8136,7 +10019,7 @@ f64.const 0.1 call $~lib/util/number/dtoa local.tee $96 - i32.const 1016 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -8150,7 +10033,7 @@ f64.const -1 call $~lib/util/number/dtoa local.tee $97 - i32.const 5696 + i32.const 5888 call $~lib/string/String.__eq i32.eqz if @@ -8164,7 +10047,7 @@ f64.const -0.1 call $~lib/util/number/dtoa local.tee $98 - i32.const 5720 + i32.const 5912 call $~lib/string/String.__eq i32.eqz if @@ -8178,7 +10061,7 @@ f64.const 1e6 call $~lib/util/number/dtoa local.tee $99 - i32.const 5744 + i32.const 5936 call $~lib/string/String.__eq i32.eqz if @@ -8192,7 +10075,7 @@ f64.const 1e-06 call $~lib/util/number/dtoa local.tee $100 - i32.const 5784 + i32.const 5976 call $~lib/string/String.__eq i32.eqz if @@ -8206,7 +10089,7 @@ f64.const -1e6 call $~lib/util/number/dtoa local.tee $101 - i32.const 5816 + i32.const 6008 call $~lib/string/String.__eq i32.eqz if @@ -8220,7 +10103,7 @@ f64.const -1e-06 call $~lib/util/number/dtoa local.tee $102 - i32.const 5856 + i32.const 6048 call $~lib/string/String.__eq i32.eqz if @@ -8234,7 +10117,7 @@ f64.const 1e7 call $~lib/util/number/dtoa local.tee $103 - i32.const 5896 + i32.const 6088 call $~lib/string/String.__eq i32.eqz if @@ -8248,7 +10131,7 @@ f64.const 1e-07 call $~lib/util/number/dtoa local.tee $104 - i32.const 5936 + i32.const 6128 call $~lib/string/String.__eq i32.eqz if @@ -8262,7 +10145,7 @@ f64.const 1.e+308 call $~lib/util/number/dtoa local.tee $105 - i32.const 5960 + i32.const 6152 call $~lib/string/String.__eq i32.eqz if @@ -8276,7 +10159,7 @@ f64.const -1.e+308 call $~lib/util/number/dtoa local.tee $106 - i32.const 5992 + i32.const 6184 call $~lib/string/String.__eq i32.eqz if @@ -8290,7 +10173,7 @@ f64.const inf call $~lib/util/number/dtoa local.tee $107 - i32.const 3936 + i32.const 4128 call $~lib/string/String.__eq i32.eqz if @@ -8304,7 +10187,7 @@ f64.const -inf call $~lib/util/number/dtoa local.tee $108 - i32.const 3896 + i32.const 4088 call $~lib/string/String.__eq i32.eqz if @@ -8318,7 +10201,7 @@ f64.const 1e-308 call $~lib/util/number/dtoa local.tee $109 - i32.const 6024 + i32.const 6216 call $~lib/string/String.__eq i32.eqz if @@ -8332,7 +10215,7 @@ f64.const -1e-308 call $~lib/util/number/dtoa local.tee $110 - i32.const 6056 + i32.const 6248 call $~lib/string/String.__eq i32.eqz if @@ -8346,7 +10229,7 @@ f64.const 1e-323 call $~lib/util/number/dtoa local.tee $111 - i32.const 6088 + i32.const 6280 call $~lib/string/String.__eq i32.eqz if @@ -8360,7 +10243,7 @@ f64.const -1e-323 call $~lib/util/number/dtoa local.tee $112 - i32.const 6120 + i32.const 6312 call $~lib/string/String.__eq i32.eqz if @@ -8374,7 +10257,7 @@ f64.const 0 call $~lib/util/number/dtoa local.tee $113 - i32.const 3848 + i32.const 4040 call $~lib/string/String.__eq i32.eqz if @@ -8388,7 +10271,7 @@ f64.const 4294967272 call $~lib/util/number/dtoa local.tee $114 - i32.const 6152 + i32.const 6344 call $~lib/string/String.__eq i32.eqz if @@ -8402,7 +10285,7 @@ f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa local.tee $115 - i32.const 6192 + i32.const 6384 call $~lib/string/String.__eq i32.eqz if @@ -8416,7 +10299,7 @@ f64.const 555555555.5555556 call $~lib/util/number/dtoa local.tee $116 - i32.const 6256 + i32.const 6448 call $~lib/string/String.__eq i32.eqz if @@ -8430,7 +10313,7 @@ f64.const 0.9999999999999999 call $~lib/util/number/dtoa local.tee $117 - i32.const 6312 + i32.const 6504 call $~lib/string/String.__eq i32.eqz if @@ -8444,7 +10327,7 @@ f64.const 1 call $~lib/util/number/dtoa local.tee $118 - i32.const 5672 + i32.const 5864 call $~lib/string/String.__eq i32.eqz if @@ -8458,7 +10341,7 @@ f64.const 12.34 call $~lib/util/number/dtoa local.tee $119 - i32.const 6368 + i32.const 6560 call $~lib/string/String.__eq i32.eqz if @@ -8474,7 +10357,7 @@ f64.div call $~lib/util/number/dtoa local.tee $120 - i32.const 6400 + i32.const 6592 call $~lib/string/String.__eq i32.eqz if @@ -8488,7 +10371,7 @@ f64.const 1234e17 call $~lib/util/number/dtoa local.tee $121 - i32.const 6456 + i32.const 6648 call $~lib/string/String.__eq i32.eqz if @@ -8502,7 +10385,7 @@ f64.const 1234e18 call $~lib/util/number/dtoa local.tee $122 - i32.const 6520 + i32.const 6712 call $~lib/string/String.__eq i32.eqz if @@ -8516,7 +10399,7 @@ f64.const 2.71828 call $~lib/util/number/dtoa local.tee $123 - i32.const 6560 + i32.const 6752 call $~lib/string/String.__eq i32.eqz if @@ -8530,7 +10413,7 @@ f64.const 0.0271828 call $~lib/util/number/dtoa local.tee $124 - i32.const 6592 + i32.const 6784 call $~lib/string/String.__eq i32.eqz if @@ -8544,7 +10427,7 @@ f64.const 271.828 call $~lib/util/number/dtoa local.tee $125 - i32.const 6632 + i32.const 6824 call $~lib/string/String.__eq i32.eqz if @@ -8558,7 +10441,7 @@ f64.const 1.1e+128 call $~lib/util/number/dtoa local.tee $126 - i32.const 6664 + i32.const 6856 call $~lib/string/String.__eq i32.eqz if @@ -8572,7 +10455,7 @@ f64.const 1.1e-64 call $~lib/util/number/dtoa local.tee $127 - i32.const 6696 + i32.const 6888 call $~lib/string/String.__eq i32.eqz if @@ -8586,7 +10469,7 @@ f64.const 0.000035689 call $~lib/util/number/dtoa local.tee $128 - i32.const 6728 + i32.const 6920 call $~lib/string/String.__eq i32.eqz if @@ -8858,1945 +10741,14 @@ local.get $128 call $~lib/rt/pure/__release ) - (func $std/string/getString (; 57 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 80 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $start (; 58 ;) (type $FUNCSIG$v) + (func $start (; 81 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $~lib/rt/tlsf/removeBlock (; 59 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 60 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 - i32.load - local.set $6 - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $3 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end - ) - (func $~lib/rt/tlsf/addMemory (; 61 ;) (type $FUNCSIG$iiii) (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 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 62 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 6816 - i32.const 6768 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 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 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - 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 $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/reallocateBlock (; 69 ;) (type $FUNCSIG$iiii) (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 491 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 552 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 553 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/rt/tlsf/freeBlock (; 71 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/rt/tlsf/__free (; 72 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 560 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 561 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/increment (; 73 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 6872 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/pure/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 6872 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/__typeinfo (; 75 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/rt/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if - i32.const 2072 - i32.const 6920 - i32.const 23 - i32.const 34 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/pure/growRoots (; 76 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - global.set $~lib/rt/pure/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/pure/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 77 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/pure/END - i32.ge_u - if - call $~lib/rt/pure/growRoots - global.get $~lib/rt/pure/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/decrement (; 78 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - call $~lib/rt/pure/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 6872 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 6872 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 8 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/pure/__retainRelease (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.ne - if - global.get $~lib/heap/HEAP_BASE - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (; 80 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/heap/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 82 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 83 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 84 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/rt/pure/markGray (; 86 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -10823,7 +10775,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 87 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 83 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -10840,7 +10792,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 88 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -10877,7 +10829,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 85 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -10906,7 +10858,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/__visit (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -10968,7 +10920,7 @@ i32.eqz if i32.const 0 - i32.const 6872 + i32.const 136 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -11015,7 +10967,7 @@ i32.eqz if i32.const 0 - i32.const 6872 + i32.const 136 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -11052,7 +11004,7 @@ i32.eqz if i32.const 0 - i32.const 6872 + i32.const 136 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -11060,29 +11012,77 @@ end end ) - (func $~lib/rt/__visit_members (; 91 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 87 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$16$break + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array#__visit_impl (; 88 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 91 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/rt/__visit_members (; 92 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $block$4$break block end block $switch$1$leave - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$default + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -11091,17 +11091,24 @@ unreachable end block + br $block$4$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit_impl block - return + br $block$4$break unreachable end unreachable unreachable end unreachable - end - block - br $block$16$break unreachable end unreachable @@ -11110,9 +11117,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -11127,9 +11134,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -11144,9 +11151,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -11161,9 +11168,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -11176,13 +11183,6 @@ end block block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end unreachable unreachable end @@ -11210,6 +11210,6 @@ end unreachable ) - (func $null (; 92 ;) (type $FUNCSIG$v) + (func $null (; 93 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index a9129fb9..cfbbfa18 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) @@ -10,60 +10,35 @@ (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\06") - (data (i32.const 24) "1\002\003") - (data (i32.const 32) "\10\00\00\00\1a") - (data (i32.const 48) "s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") - (data (i32.const 80) "\10\00\00\00(") - (data (i32.const 96) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 136) "\10\00\00\00&") - (data (i32.const 152) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 192) "\10") - (data (i32.const 208) "\10\00\00\00\16") - (data (i32.const 224) "h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") - (data (i32.const 248) "\10\00\00\00$") - (data (i32.const 264) "i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") - (data (i32.const 304) "\10\00\00\00\10") - (data (i32.const 320) "i\00s\00R\00e\00g\00E\00x\00p") - (data (i32.const 336) "\10\00\00\00\n") - (data (i32.const 352) "m\00a\00t\00c\00h") - (data (i32.const 368) "\10\00\00\00\0e") - (data (i32.const 384) "r\00e\00p\00l\00a\00c\00e") - (data (i32.const 400) "\10\00\00\00\0c") - (data (i32.const 416) "s\00e\00a\00r\00c\00h") - (data (i32.const 432) "\10\00\00\00\0e") - (data (i32.const 448) "s\00p\00e\00c\00i\00e\00s") - (data (i32.const 464) "\10\00\00\00\n") - (data (i32.const 480) "s\00p\00l\00i\00t") - (data (i32.const 496) "\10\00\00\00\16") - (data (i32.const 512) "t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") - (data (i32.const 536) "\10\00\00\00\16") - (data (i32.const 552) "t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") - (data (i32.const 576) "\10\00\00\00\16") - (data (i32.const 592) "u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") - (data (i32.const 616) "\10\00\00\00\0e") - (data (i32.const 632) "S\00y\00m\00b\00o\00l\00(") - (data (i32.const 648) "\10\00\00\00\08") - (data (i32.const 664) "n\00u\00l\00l") - (data (i32.const 672) "\10\00\00\00\02") - (data (i32.const 688) ")") - (data (i32.const 696) "\10\00\00\00\10") - (data (i32.const 712) "S\00y\00m\00b\00o\00l\00(\00)") - (data (i32.const 728) "\10\00\00\00\16") - (data (i32.const 744) "S\00y\00m\00b\00o\00l\00(\001\002\003\00)") - (data (i32.const 768) "\10\00\00\00&") - (data (i32.const 784) "S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") - (data (i32.const 824) "\10\00\00\004") - (data (i32.const 840) "S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") - (data (i32.const 896) "\10\00\00\00\1e") - (data (i32.const 912) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 944) "\13\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00I\00\00\00\0e") + (data (i32.const 8) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 32) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") + (data (i32.const 80) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 128) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 188) "\01\00\00\00\01") + (data (i32.const 200) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") + (data (i32.const 240) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") + (data (i32.const 296) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") + (data (i32.const 328) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h") + (data (i32.const 360) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") + (data (i32.const 392) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") + (data (i32.const 424) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") + (data (i32.const 456) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t") + (data (i32.const 488) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") + (data (i32.const 528) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") + (data (i32.const 568) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") + (data (i32.const 608) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") + (data (i32.const 640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 664) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00)") + (data (i32.const 688) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") + (data (i32.const 720) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") + (data (i32.const 760) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") + (data (i32.const 816) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0)) (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/symbol/idToString (mut i32) (i32.const 0)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) (global $std/symbol/sym4 (mut i32) (i32.const 0)) @@ -74,28 +49,22 @@ (global $std/symbol/hasInstance (mut i32) (i32.const 0)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 local.get $0 i32.const 1 local.get $0 @@ -103,20 +72,20 @@ i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const -8 + i32.const -16 i32.and - local.tee $0 - current_memory local.tee $2 + current_memory + local.tee $4 i32.const 16 i32.shl i32.gt_u if + local.get $4 local.get $2 - local.get $0 - local.get $1 + local.get $3 i32.sub i32.const 65535 i32.add @@ -124,16 +93,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $2 - local.get $3 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $5 grow_memory i32.const 0 i32.lt_s @@ -142,65 +111,20 @@ end end end - local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/util/runtime/register (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 1104 - i32.le_u - if - i32.const 0 - i32.const 96 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + global.set $~lib/rt/stub/offset + local.get $3 i32.const 16 i32.sub local.tee $2 - i32.load - i32.const -1520547049 - i32.ne - if - i32.const 0 - i32.const 96 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 local.get $1 - i32.store + i32.store offset=8 + local.get $2 local.get $0 + i32.store offset=12 + local.get $3 ) - (func $~lib/memory/memory.fill (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 local.get $1 @@ -411,29 +335,31 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 1073741808 i32.gt_u if - i32.const 0 - i32.const 152 - i32.const 54 - i32.const 43 + i32.const 96 + i32.const 144 + i32.const 56 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/util/runtime/allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.tee $1 local.get $0 call $~lib/memory/memory.fill local.get $1 - i32.const 15 - call $~lib/util/runtime/register ) - (func $~lib/map/Map<~lib/string/String,usize>#clear (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,usize>#clear (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.load + drop local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -442,6 +368,9 @@ i32.const 3 i32.store offset=4 local.get $0 + i32.load offset=8 + drop + local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 @@ -455,12 +384,11 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 5 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc local.tee $0 i32.const 0 i32.store @@ -483,12 +411,11 @@ call $~lib/map/Map<~lib/string/String,usize>#clear local.get $0 ) - (func $~lib/map/Map#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/map/Map#constructor (; 6 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) i32.const 24 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc local.tee $0 i32.const 0 i32.store @@ -511,7 +438,7 @@ call $~lib/map/Map<~lib/string/String,usize>#clear local.get $0 ) - (func $~lib/util/hash/hashStr (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -523,7 +450,7 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u i32.const 1 @@ -555,7 +482,7 @@ end local.get $1 ) - (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -588,7 +515,7 @@ end local.get $3 ) - (func $~lib/string/String.__eq (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -597,40 +524,38 @@ i32.const 1 return end - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - if - i32.const 0 + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz return end - local.get $0 - i32.const 16 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz + i32.const 0 ) - (func $~lib/map/Map<~lib/string/String,usize>#find (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#find (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $0 @@ -671,7 +596,7 @@ end i32.const 0 ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -682,12 +607,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $2 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -696,73 +621,79 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load i32.store - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.load call $~lib/util/hash/hashStr local.get $1 i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + i32.load + drop + local.get $0 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $4 + i32.load offset=8 + drop + local.get $0 + local.get $5 i32.store offset=8 local.get $0 local.get $6 @@ -772,7 +703,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map<~lib/string/String,usize>#set (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,usize>#set (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -861,7 +792,7 @@ i32.store end ) - (func $~lib/util/hash/hash32 (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -892,7 +823,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $0 @@ -933,7 +864,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -944,12 +875,12 @@ local.get $1 i32.const 1 i32.add - local.tee $4 + local.tee $2 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $4 + local.set $4 + local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul @@ -958,73 +889,79 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + local.set $5 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $7 - local.get $4 - local.set $3 + local.get $5 + local.set $2 loop $continue|0 - local.get $2 + local.get $3 local.get $7 i32.ne if - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 local.get $2 + local.get $3 i32.load i32.store - local.get $3 local.get $2 + local.get $3 i32.load offset=4 i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.load call $~lib/util/hash/hash32 local.get $1 i32.and i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add local.tee $8 i32.load i32.store offset=8 local.get $8 - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 i32.const 12 i32.add - local.set $3 + local.set $2 end - local.get $2 + local.get $3 i32.const 12 i32.add - local.set $2 + local.set $3 br $continue|0 end end local.get $0 - local.get $5 + i32.load + drop + local.get $0 + local.get $4 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 - local.get $4 + i32.load offset=8 + drop + local.get $0 + local.get $5 i32.store offset=8 local.get $0 local.get $6 @@ -1034,7 +971,7 @@ i32.load offset=20 i32.store offset=16 ) - (func $~lib/map/Map#set (; 18 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#set (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1046,6 +983,9 @@ call $~lib/map/Map#find local.tee $2 if + local.get $2 + i32.load offset=4 + drop local.get $2 i32.const 24 i32.store offset=4 @@ -1124,7 +1064,7 @@ i32.store end ) - (func $~lib/symbol/_Symbol.for (; 19 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/symbol/_Symbol.for (; 17 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) global.get $~lib/symbol/stringToId if @@ -1170,7 +1110,7 @@ call $~lib/map/Map#set local.get $0 ) - (func $~lib/map/Map#has (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1179,7 +1119,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -1193,7 +1133,7 @@ unreachable end ) - (func $~lib/symbol/_Symbol.keyFor (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/symbol/_Symbol.keyFor (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $~lib/symbol/idToString if (result i32) global.get $~lib/symbol/idToString @@ -1210,10 +1150,12 @@ i32.const 0 end ) - (func $~lib/memory/memory.copy (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 local.get $0 local.get $1 i32.eq @@ -1235,15 +1177,15 @@ i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -1252,7 +1194,7 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 @@ -1260,7 +1202,7 @@ end end loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if @@ -1268,10 +1210,10 @@ local.get $1 i64.load i64.store - local.get $2 + local.get $3 i32.const 8 i32.sub - local.set $2 + local.set $3 local.get $0 i32.const 8 i32.add @@ -1285,10 +1227,10 @@ end end loop $continue|2 - local.get $2 + local.get $3 if local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 @@ -1297,14 +1239,14 @@ i32.const 1 i32.add local.set $1 - local.get $3 + local.get $2 local.get $4 i32.load8_u i32.store8 - local.get $2 + local.get $3 i32.const 1 i32.sub - local.set $2 + local.set $3 br $continue|2 end end @@ -1319,22 +1261,22 @@ if loop $continue|3 local.get $0 - local.get $2 + local.get $3 i32.add i32.const 7 i32.and if - local.get $2 + local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -1342,18 +1284,18 @@ end end loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - local.get $2 + local.get $0 + local.get $3 i32.const 8 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i64.load i64.store @@ -1362,16 +1304,16 @@ end end loop $continue|5 - local.get $2 + local.get $3 if - local.get $2 + local.get $0 + local.get $3 i32.const 1 i32.sub - local.tee $2 - local.get $0 + local.tee $3 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_u i32.store8 @@ -1381,18 +1323,18 @@ end end ) - (func $~lib/string/String#concat (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $1 - i32.const 664 + i32.const 656 local.get $1 select - local.tee $3 + local.tee $1 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u i32.const 1 @@ -1401,49 +1343,44 @@ local.get $0 i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u i32.const 1 i32.shl - local.tee $1 + local.tee $3 i32.add local.tee $2 i32.eqz if - i32.const 208 + i32.const 200 return end local.get $2 - call $~lib/util/runtime/allocate + i32.const 1 + call $~lib/rt/stub/__alloc local.tee $2 local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add local.get $3 + call $~lib/memory/memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 local.get $4 call $~lib/memory/memory.copy local.get $2 - i32.const 16 - call $~lib/util/runtime/register ) - (func $~lib/string/String.__concat (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 664 + i32.const 656 local.get $0 select local.get $1 call $~lib/string/String#concat ) - (func $~lib/symbol/_Symbol#toString (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - i32.const 208 - local.set $1 - i32.const 632 + (func $~lib/symbol/_Symbol#toString (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 624 block $break|0 (result i32) block $case11|0 block $case10|0 @@ -1461,49 +1398,48 @@ i32.ne if local.get $0 - local.tee $2 i32.const 2 i32.eq br_if $case1|0 block $tablify|0 - local.get $2 + local.get $0 i32.const 3 i32.sub br_table $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $tablify|0 end br $case11|0 end - i32.const 224 + i32.const 216 br $break|0 end - i32.const 264 + i32.const 256 br $break|0 end - i32.const 320 + i32.const 312 br $break|0 end - i32.const 352 + i32.const 344 br $break|0 end - i32.const 384 + i32.const 376 br $break|0 end - i32.const 416 + i32.const 408 br $break|0 end - i32.const 448 + i32.const 440 br $break|0 end - i32.const 480 + i32.const 472 br $break|0 end - i32.const 512 + i32.const 504 br $break|0 end - i32.const 552 + i32.const 544 br $break|0 end - i32.const 592 + i32.const 584 br $break|0 end global.get $~lib/symbol/idToString @@ -1519,14 +1455,14 @@ local.get $0 call $~lib/map/Map#get else - i32.const 208 + i32.const 200 end end call $~lib/string/String.__concat - i32.const 688 + i32.const 680 call $~lib/string/String.__concat ) - (func $start:std/symbol (; 27 ;) (type $FUNCSIG$v) + (func $start:std/symbol (; 25 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/symbol/nextId local.tee $0 @@ -1563,10 +1499,10 @@ call $~lib/builtins/abort unreachable end - i32.const 1104 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + i32.const 896 + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset call $~lib/symbol/_Symbol.for global.set $std/symbol/sym3 call $~lib/symbol/_Symbol.for @@ -1608,21 +1544,9 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol.keyFor - local.tee $0 - i32.eqz - if - unreachable - end - local.get $0 global.set $std/symbol/key3 global.get $std/symbol/sym4 call $~lib/symbol/_Symbol.keyFor - local.tee $0 - i32.eqz - if - unreachable - end - local.get $0 global.set $std/symbol/key4 global.get $std/symbol/key3 i32.const 24 @@ -1660,7 +1584,7 @@ end local.get $0 call $~lib/symbol/_Symbol#toString - i32.const 712 + i32.const 704 call $~lib/string/String.__eq i32.eqz if @@ -1673,7 +1597,7 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - i32.const 744 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -1690,7 +1614,7 @@ global.set $std/symbol/isConcatSpreadable global.get $std/symbol/hasInstance call $~lib/symbol/_Symbol#toString - i32.const 784 + i32.const 776 call $~lib/string/String.__eq i32.eqz if @@ -1703,7 +1627,7 @@ end global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString - i32.const 840 + i32.const 832 call $~lib/string/String.__eq i32.eqz if @@ -1715,187 +1639,10 @@ unreachable end ) - (func $~lib/runtime/runtime.instanceof (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 944 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 944 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 944 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 944 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 944 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 944 - i32.add - i32.load - end - local.tee $3 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $2 - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $3 - i32.const 1024 - i32.and - if - local.get $1 - local.get $2 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - if - i32.const 0 - i32.const 912 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 34 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 35 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 912 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $start (; 36 ;) (type $FUNCSIG$v) + (func $start (; 26 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 37 ;) (type $FUNCSIG$v) + (func $null (; 27 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index d5a21860..113242da 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -1,8 +1,8 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) @@ -10,43 +10,37 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\06\00\00\00\00\00\00\00\00\00\00\001\002\003\00") - (data (i32.const 32) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00") - (data (i32.const 80) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 136) "\10\00\00\00&\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 192) "\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 208) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00") - (data (i32.const 248) "\10\00\00\00$\00\00\00\00\00\00\00\00\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00") - (data (i32.const 304) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00") - (data (i32.const 336) "\10\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00m\00a\00t\00c\00h\00") - (data (i32.const 368) "\10\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00r\00e\00p\00l\00a\00c\00e\00") - (data (i32.const 400) "\10\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00s\00e\00a\00r\00c\00h\00") - (data (i32.const 432) "\10\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00s\00p\00e\00c\00i\00e\00s\00") - (data (i32.const 464) "\10\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00s\00p\00l\00i\00t\00") - (data (i32.const 496) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00") - (data (i32.const 536) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00") - (data (i32.const 576) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00") - (data (i32.const 616) "\10\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00S\00y\00m\00b\00o\00l\00(\00") - (data (i32.const 648) "\10\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00n\00u\00l\00l\00") - (data (i32.const 672) "\10\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00)\00") - (data (i32.const 696) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00") - (data (i32.const 728) "\10\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00") - (data (i32.const 768) "\10\00\00\00&\00\00\00\00\00\00\00\00\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00") - (data (i32.const 824) "\10\00\00\004\00\00\00\00\00\00\00\00\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00") - (data (i32.const 896) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 944) "\13\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00I\00\00\00\0e\00\00\00") + (data (i32.const 8) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\002\003\00") + (data (i32.const 32) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00") + (data (i32.const 80) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 128) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 184) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 200) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00") + (data (i32.const 240) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00") + (data (i32.const 296) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00") + (data (i32.const 328) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h\00") + (data (i32.const 360) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00") + (data (i32.const 392) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") + (data (i32.const 424) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00") + (data (i32.const 456) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t\00") + (data (i32.const 488) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00") + (data (i32.const 528) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00") + (data (i32.const 568) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00") + (data (i32.const 608) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00") + (data (i32.const 640) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 664) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00)\00") + (data (i32.const 688) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00") + (data (i32.const 720) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00") + (data (i32.const 760) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00") + (data (i32.const 816) "4\00\00\00\01\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0)) (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) - (global $~lib/util/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) + (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/symbol/idToString (mut i32) (i32.const 0)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) (global $std/symbol/sym4 (mut i32) (i32.const 0)) @@ -58,22 +52,21 @@ (global $std/symbol/hasInstance (mut i32) (i32.const 0)) (global $~lib/symbol/_Symbol.isConcatSpreadable i32 (i32.const 2)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 944)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 1104)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 884)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/symbol/Symbol (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $~lib/symbol/Symbol (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop block (result i32) global.get $~lib/symbol/nextId local.tee $1 @@ -89,61 +82,56 @@ unreachable end local.get $2 - ) - (func $~lib/util/runtime/adjust (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 - i32.const 32 + local.set $1 local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl + call $~lib/rt/stub/__release + local.get $1 ) - (func $~lib/allocator/arena/__mem_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/stub/__alloc (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.const 1073741824 + i32.const 1073741808 i32.gt_u if unreachable end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 local.get $2 + local.get $0 + local.tee $3 + i32.const 1 + local.tee $4 local.get $3 + local.get $4 i32.gt_u select i32.add - i32.const 7 + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 - current_memory local.set $5 - local.get $4 + current_memory + local.set $6 local.get $5 + local.get $6 i32.const 16 i32.shl i32.gt_u if - local.get $4 - local.get $1 + local.get $5 + local.get $2 i32.sub i32.const 65535 i32.add @@ -153,22 +141,22 @@ i32.and i32.const 16 i32.shr_u - local.set $2 - local.get $5 - local.tee $3 - local.get $2 - local.tee $6 - local.get $3 + local.set $3 local.get $6 + local.tee $4 + local.get $3 + local.tee $7 + local.get $4 + local.get $7 i32.gt_s select - local.set $3 - local.get $3 + local.set $4 + local.get $4 grow_memory i32.const 0 i32.lt_s if - local.get $2 + local.get $3 grow_memory i32.const 0 i32.lt_s @@ -177,353 +165,320 @@ end end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/allocator/arena/__mem_allocate - return - ) - (func $~lib/util/runtime/allocate (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/util/runtime/register (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $5 + global.set $~lib/rt/stub/offset + local.get $2 + i32.const 16 i32.sub - local.set $2 - local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.set $8 + local.get $8 local.get $1 - i32.store + i32.store offset=8 + local.get $8 local.get $0 + i32.store offset=12 + local.get $2 ) - (func $~lib/memory/memory.fill (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 local.get $2 + local.set $3 + local.get $3 i32.eqz if br $~lib/util/memory/memset|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 1 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 2 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 1 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 + local.get $5 i32.const 2 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 2 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 3 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 6 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 3 i32.add - local.get $1 + local.get $4 i32.store8 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $1 + local.get $4 i32.store8 - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end i32.const 0 - local.get $0 + local.get $5 i32.sub i32.const 3 i32.and - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -4 i32.and - local.set $2 + local.set $3 i32.const -1 i32.const 255 i32.div_u - local.get $1 + local.get $4 i32.const 255 i32.and i32.mul - local.set $4 - local.get $0 - local.get $4 + local.set $7 + local.get $5 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 4 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 8 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 4 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 8 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 12 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 8 i32.sub - local.get $4 + local.get $7 i32.store - local.get $2 + local.get $3 i32.const 24 i32.le_u if br $~lib/util/memory/memset|inlined.0 end - local.get $0 + local.get $5 i32.const 12 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 16 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 20 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 + local.get $5 i32.const 24 i32.add - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 28 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 24 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 20 i32.sub - local.get $4 + local.get $7 i32.store - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 16 i32.sub - local.get $4 + local.get $7 i32.store i32.const 24 - local.get $0 + local.get $5 i32.const 4 i32.and i32.add - local.set $5 - local.get $0 + local.set $6 local.get $5 + local.get $6 i32.add - local.set $0 - local.get $2 - local.get $5 + local.set $5 + local.get $3 + local.get $6 i32.sub - local.set $2 - local.get $4 + local.set $3 + local.get $7 i64.extend_i32_u - local.get $4 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $6 + local.set $8 block $break|0 loop $continue|0 - local.get $2 + local.get $3 i32.const 32 i32.ge_u if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 br $continue|0 end end end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 i32.gt_u if - i32.const 0 - i32.const 152 - i32.const 54 - i32.const 43 + i32.const 96 + i32.const 144 + i32.const 56 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/util/runtime/allocate + i32.const 0 + call $~lib/rt/stub/__alloc local.set $2 local.get $2 i32.const 0 local.get $1 call $~lib/memory/memory.fill local.get $2 - i32.const 15 - call $~lib/util/runtime/register + call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,usize>#clear (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__skippedRelease (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + ) + (func $~lib/map/Map<~lib/string/String,usize>#clear (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 + local.tee $1 + local.get $1 + i32.load i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/stub/__skippedRelease i32.store local.get $0 i32.const 4 @@ -531,9 +486,13 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/stub/__skippedRelease i32.store offset=8 local.get $0 i32.const 4 @@ -545,15 +504,15 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 24 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -579,11 +538,16 @@ call $~lib/map/Map<~lib/string/String,usize>#clear local.get $0 ) - (func $~lib/map/Map#clear (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map#clear (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 + local.tee $1 + local.get $1 + i32.load i32.const 0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/stub/__skippedRelease i32.store local.get $0 i32.const 4 @@ -591,9 +555,13 @@ i32.sub i32.store offset=4 local.get $0 + local.tee $1 + local.get $1 + i32.load offset=8 i32.const 0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/rt/stub/__skippedRelease i32.store offset=8 local.get $0 i32.const 4 @@ -605,15 +573,15 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) block (result i32) local.get $0 i32.eqz if i32.const 24 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain local.set $0 end local.get $0 @@ -639,18 +607,21 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/string/String#get:length (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u ) - (func $~lib/util/hash/hashStr (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop i32.const -2128831035 local.set $1 local.get $0 @@ -693,11 +664,22 @@ end end local.get $1 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) - (func $~lib/util/string/compareImpl (; 15 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 14 ;) (type $FUNCSIG$iiiiii) (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.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop i32.const 0 local.set $5 local.get $0 @@ -727,33 +709,50 @@ i32.const 0 end if - block - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 br $continue|0 end end end local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/string/String.__eq (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop 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 @@ -768,29 +767,51 @@ 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 $2 - local.get $2 + local.set $3 + local.get $3 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.get $1 + call $~lib/rt/stub/__release + local.get $2 return end local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 + local.get $3 call $~lib/util/string/compareImpl i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/map/Map<~lib/string/String,usize>#find (; 17 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#find (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load local.get $2 @@ -806,74 +827,109 @@ loop $continue|0 local.get $3 if - block + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - call $~lib/string/String.__eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 + i32.load + local.get $1 + call $~lib/string/String.__eq + else + i32.const 0 end + if + local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 br $continue|0 end end end i32.const 0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/map/Map<~lib/string/String,usize>#has (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#has (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 local.get $1 block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) local.get $1 + call $~lib/rt/stub/__retain local.set $2 local.get $2 call $~lib/util/hash/hashStr + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 end call $~lib/map/Map<~lib/string/String,usize>#find i32.const 0 i32.ne + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/map/Map<~lib/string/String,usize>#get (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,usize>#get (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 local.get $1 block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) local.get $1 + call $~lib/rt/stub/__retain local.set $2 local.get $2 call $~lib/util/hash/hashStr + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 end call $~lib/map/Map<~lib/string/String,usize>#find - local.set $3 - local.get $3 + local.set $4 + local.get $4 if (result i32) - local.get $3 + local.get $4 i32.load offset=4 else unreachable end + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/rt/stub/__retainRelease (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 ) (func $~lib/map/Map<~lib/string/String,usize>#rehash (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -931,75 +987,86 @@ local.get $7 i32.ne if - block - local.get $6 - local.set $9 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) local.get $9 i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hashStr - br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 - end - local.get $1 - i32.and + call $~lib/rt/stub/__retain local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add + call $~lib/util/hash/hashStr local.set $12 - local.get $10 + local.get $11 + call $~lib/rt/stub/__release local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 end - local.get $6 - block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.4 (result i32) + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.3 (result i32) i32.const 12 end i32.add - local.set $6 + local.set $8 end + local.get $6 + block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 br $continue|0 end end end local.get $0 + local.tee $9 + local.get $9 + i32.load local.get $3 + call $~lib/rt/stub/__retainRelease i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 local.get $5 + call $~lib/rt/stub/__retainRelease i32.store offset=8 local.get $0 local.get $4 @@ -1008,28 +1075,40 @@ local.get $0 i32.load offset=20 i32.store offset=16 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release ) (func $~lib/map/Map<~lib/string/String,usize>#set (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) local.get $1 + call $~lib/rt/stub/__retain local.set $3 local.get $3 call $~lib/util/hash/hashStr + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 end - local.set $4 + local.set $5 local.get $0 local.get $1 - local.get $4 - call $~lib/map/Map<~lib/string/String,usize>#find - local.set $5 local.get $5 + call $~lib/map/Map<~lib/string/String,usize>#find + local.set $6 + local.get $6 if - local.get $5 + local.get $6 local.get $2 i32.store offset=4 else @@ -1064,28 +1143,30 @@ end local.get $0 i32.load offset=8 + call $~lib/rt/stub/__retain local.set $3 local.get $3 block (result i32) local.get $0 local.get $0 i32.load offset=16 - local.tee $6 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $6 + local.get $4 end block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.5 (result i32) i32.const 12 end i32.mul i32.add - local.set $5 - local.get $5 + local.set $6 + local.get $6 local.get $1 + call $~lib/rt/stub/__retain i32.store - local.get $5 + local.get $6 local.get $2 i32.store offset=4 local.get $0 @@ -1096,22 +1177,26 @@ i32.store offset=20 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and i32.const 4 i32.mul i32.add - local.set $6 - local.get $5 + local.set $4 local.get $6 + local.get $4 i32.load i32.store offset=8 + local.get $4 local.get $6 - local.get $5 i32.store + local.get $3 + call $~lib/rt/stub/__release end + local.get $1 + call $~lib/rt/stub/__release ) (func $~lib/util/hash/hash32 (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -1172,32 +1257,30 @@ loop $continue|0 local.get $3 if - block + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 end + if + local.get $3 + return + end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 br $continue|0 end end @@ -1260,75 +1343,81 @@ local.get $7 i32.ne if - block - local.get $6 - local.set $9 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $9 i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul + i32.add + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) i32.const 12 end i32.add - local.set $6 + local.set $8 end + local.get $6 + block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) + i32.const 12 + end + i32.add + local.set $6 br $continue|0 end end end local.get $0 + local.tee $9 + local.get $9 + i32.load local.get $3 + call $~lib/rt/stub/__retainRelease i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 + local.tee $9 + local.get $9 + i32.load offset=8 local.get $5 + call $~lib/rt/stub/__retainRelease i32.store offset=8 local.get $0 local.get $4 @@ -1337,12 +1426,19 @@ local.get $0 i32.load offset=20 i32.store offset=16 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release ) (func $~lib/map/Map#set (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + local.get $2 + call $~lib/rt/stub/__retain + drop block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $3 @@ -1359,7 +1455,10 @@ local.get $5 if local.get $5 + local.get $5 + i32.load offset=4 local.get $2 + call $~lib/rt/stub/__retainRelease i32.store offset=4 else local.get $0 @@ -1393,6 +1492,7 @@ end local.get $0 i32.load offset=8 + call $~lib/rt/stub/__retain local.set $3 local.get $3 block (result i32) @@ -1416,6 +1516,7 @@ i32.store local.get $5 local.get $2 + call $~lib/rt/stub/__retain i32.store offset=4 local.get $0 local.get $0 @@ -1440,19 +1541,30 @@ local.get $6 local.get $5 i32.store + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 + call $~lib/rt/stub/__release ) (func $~lib/symbol/_Symbol.for (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop global.get $~lib/symbol/stringToId i32.eqz if + global.get $~lib/symbol/stringToId i32.const 0 call $~lib/map/Map<~lib/string/String,usize>#constructor + call $~lib/rt/stub/__skippedRelease global.set $~lib/symbol/stringToId + global.get $~lib/symbol/idToString i32.const 0 call $~lib/map/Map#constructor + call $~lib/rt/stub/__skippedRelease global.set $~lib/symbol/idToString else global.get $~lib/symbol/stringToId @@ -1462,6 +1574,10 @@ global.get $~lib/symbol/stringToId local.get $0 call $~lib/map/Map<~lib/string/String,usize>#get + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 return end end @@ -1488,6 +1604,10 @@ local.get $0 call $~lib/map/Map#set local.get $2 + local.set $1 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 ) (func $~lib/map/Map#has (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1507,6 +1627,7 @@ (func $~lib/map/Map#get (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 local.get $1 block $~lib/util/hash/HASH|inlined.3 (result i32) @@ -1522,9 +1643,16 @@ if (result i32) local.get $3 i32.load offset=4 + call $~lib/rt/stub/__retain + local.tee $2 else unreachable + call $~lib/rt/stub/__retain + unreachable + local.tee $4 + unreachable end + call $~lib/rt/stub/__retain ) (func $~lib/symbol/_Symbol.keyFor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $~lib/symbol/idToString @@ -1543,94 +1671,98 @@ call $~lib/map/Map#get else i32.const 0 + call $~lib/rt/stub/__retain end ) (func $~lib/memory/memory.copy (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 br $continue|0 end end end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 br $continue|1 end end @@ -1638,95 +1770,89 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if - block - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $5 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $5 + local.get $6 end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store br $continue|4 end end @@ -1734,16 +1860,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -1759,11 +1885,17 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $1 i32.const 0 i32.eq if - i32.const 664 + local.get $1 + i32.const 656 + call $~lib/rt/stub/__retainRelease local.set $1 end local.get $0 @@ -1784,43 +1916,68 @@ i32.const 0 i32.eq if - i32.const 208 + i32.const 200 + call $~lib/rt/stub/__retain + local.set $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $5 return end local.get $4 - call $~lib/util/runtime/allocate - local.set $5 - local.get $5 + i32.const 1 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $6 + local.get $6 local.get $0 local.get $2 call $~lib/memory/memory.copy - local.get $5 + local.get $6 local.get $2 i32.add local.get $1 local.get $3 call $~lib/memory/memory.copy + local.get $6 + local.set $5 + local.get $1 + call $~lib/rt/stub/__release local.get $5 - i32.const 16 - call $~lib/util/runtime/register ) (func $~lib/string/String.__concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 - i32.const 664 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 656 local.get $0 i32.const 0 i32.ne select local.get $1 call $~lib/string/String#concat + local.set $2 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) (func $~lib/symbol/_Symbol#toString (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 local.set $1 - i32.const 208 + i32.const 200 + call $~lib/rt/stub/__retain local.set $2 block $break|0 block $case11|0 @@ -1884,7 +2041,9 @@ br $case11|0 end block - i32.const 224 + local.get $2 + i32.const 216 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1892,7 +2051,9 @@ unreachable end block - i32.const 264 + local.get $2 + i32.const 256 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1900,7 +2061,9 @@ unreachable end block - i32.const 320 + local.get $2 + i32.const 312 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1908,7 +2071,9 @@ unreachable end block - i32.const 352 + local.get $2 + i32.const 344 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1916,7 +2081,9 @@ unreachable end block - i32.const 384 + local.get $2 + i32.const 376 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1924,7 +2091,9 @@ unreachable end block - i32.const 416 + local.get $2 + i32.const 408 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1932,7 +2101,9 @@ unreachable end block - i32.const 448 + local.get $2 + i32.const 440 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1940,7 +2111,9 @@ unreachable end block - i32.const 480 + local.get $2 + i32.const 472 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1948,7 +2121,9 @@ unreachable end block - i32.const 512 + local.get $2 + i32.const 504 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1956,7 +2131,9 @@ unreachable end block - i32.const 552 + local.get $2 + i32.const 544 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1964,7 +2141,9 @@ unreachable end block - i32.const 592 + local.get $2 + i32.const 584 + call $~lib/rt/stub/__retainRelease local.set $2 br $break|0 unreachable @@ -1983,9 +2162,11 @@ i32.const 0 end if + local.get $2 global.get $~lib/symbol/idToString local.get $1 call $~lib/map/Map#get + call $~lib/rt/stub/__skippedRelease local.set $2 end br $break|0 @@ -1993,14 +2174,30 @@ end unreachable end - i32.const 632 + i32.const 624 local.get $2 call $~lib/string/String.__concat - i32.const 688 + local.tee $3 + i32.const 680 call $~lib/string/String.__concat + local.tee $4 + call $~lib/rt/stub/__retain + local.set $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $5 ) (func $start:std/symbol (; 34 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 24 call $~lib/symbol/Symbol global.set $std/symbol/sym1 @@ -2019,16 +2216,16 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/HEAP_BASE - i32.const 7 + global.get $~lib/heap/HEAP_BASE + i32.const 15 i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset + global.set $~lib/rt/stub/startOffset + global.get $~lib/rt/stub/startOffset + global.set $~lib/rt/stub/offset i32.const 24 call $~lib/symbol/_Symbol.for global.set $std/symbol/sym3 @@ -2080,20 +2277,12 @@ global.get $std/symbol/sym3 call $~lib/symbol/_Symbol.keyFor local.tee $0 - if (result i32) - local.get $0 - else - unreachable - end + call $~lib/rt/stub/__retain global.set $std/symbol/key3 global.get $std/symbol/sym4 call $~lib/symbol/_Symbol.keyFor - local.tee $0 - if (result i32) - local.get $0 - else - unreachable - end + local.tee $1 + call $~lib/rt/stub/__retain global.set $std/symbol/key4 global.get $std/symbol/key3 i32.const 24 @@ -2122,7 +2311,8 @@ i32.const 0 call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString - i32.const 712 + local.tee $2 + i32.const 704 call $~lib/string/String.__eq i32.eqz if @@ -2135,7 +2325,8 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - i32.const 744 + local.tee $3 + i32.const 736 call $~lib/string/String.__eq i32.eqz if @@ -2152,7 +2343,8 @@ global.set $std/symbol/isConcatSpreadable global.get $std/symbol/hasInstance call $~lib/symbol/_Symbol#toString - i32.const 784 + local.tee $4 + i32.const 776 call $~lib/string/String.__eq i32.eqz if @@ -2165,7 +2357,8 @@ end global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString - i32.const 840 + local.tee $5 + i32.const 832 call $~lib/string/String.__eq i32.eqz if @@ -2180,208 +2373,22 @@ drop global.get $~lib/symbol/_Symbol.isConcatSpreadable drop - ) - (func $~lib/runtime/runtime.instanceof (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 + call $~lib/rt/stub/__release local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $8 - local.get $8 - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 912 - i32.const 97 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release ) - (func $~lib/runtime/runtime.retain (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.release (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/runtime/runtime.collect (; 44 ;) (type $FUNCSIG$v) - i32.const 0 - i32.const 912 - i32.const 139 - i32.const 9 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/runtime/runtime#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable - ) - (func $start (; 46 ;) (type $FUNCSIG$v) + (func $start (; 35 ;) (type $FUNCSIG$v) call $start:std/symbol ) - (func $null (; 47 ;) (type $FUNCSIG$v) + (func $null (; 36 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index 700e2e00..7bccb1c9 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -3,16 +3,14 @@ (type $FUNCSIG$v (func)) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 8) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 104) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") - (data (i32.const 136) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") - (data (i32.const 168) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") - (data (i32.const 208) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") - (data (i32.const 240) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") - (data (i32.const 272) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") + (data (i32.const 56) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") + (data (i32.const 104) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t") + (data (i32.const 136) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t") + (data (i32.const 168) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t") + (data (i32.const 208) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") + (data (i32.const 240) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") + (data (i32.const 272) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") (global $~lib/started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "main" (func $std/trace/main)) @@ -86,14 +84,12 @@ global.get $~lib/started i32.eqz if - call $start + call $start:std/trace i32.const 1 global.set $~lib/started end ) - (func $start (; 3 ;) (type $FUNCSIG$v) - call $start:std/trace - ) - (func $null (; 4 ;) (type $FUNCSIG$v) + (func $null (; 3 ;) (type $FUNCSIG$v) + nop ) ) diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index 700e2e00..b2dda4af 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -3,14 +3,14 @@ (type $FUNCSIG$v (func)) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 8) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 104) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") - (data (i32.const 136) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") - (data (i32.const 168) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") - (data (i32.const 208) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") - (data (i32.const 240) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") - (data (i32.const 272) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 56) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 104) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") + (data (i32.const 136) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") + (data (i32.const 168) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") + (data (i32.const 208) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") + (data (i32.const 240) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") + (data (i32.const 272) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/started (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 9f9de100..5b739fab 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -13,12 +13,9 @@ (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$viij (func (param i32 i32 i64))) (type $FUNCSIG$jjjii (func (param i64 i64 i32 i32) (result i64))) - (type $FUNCSIG$jiij (func (param i32 i32 i64) (result i64))) (type $FUNCSIG$viif (func (param i32 i32 f32))) (type $FUNCSIG$fffii (func (param f32 f32 i32 i32) (result f32))) - (type $FUNCSIG$fiif (func (param i32 i32 f32) (result f32))) (type $FUNCSIG$dddii (func (param f64 f64 i32 i32) (result f64))) - (type $FUNCSIG$diid (func (param i32 i32 f64) (result f64))) (type $FUNCSIG$jjii (func (param i64 i32 i32) (result i64))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$ffii (func (param f32 i32 i32) (result f32))) @@ -27,93 +24,68 @@ (type $FUNCSIG$ijii (func (param i64 i32 i32) (result i32))) (type $FUNCSIG$ifii (func (param f32 i32 i32) (result i32))) (type $FUNCSIG$idii (func (param f64 i32 i32) (result i32))) - (type $FUNCSIG$fff (func (param f32 f32) (result f32))) - (type $FUNCSIG$if (func (param f32) (result i32))) - (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) - (type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$vjii (func (param i64 i32 i32))) (type $FUNCSIG$vfii (func (param f32 i32 i32))) (type $FUNCSIG$vdii (func (param f64 i32 i32))) + (type $FUNCSIG$fi (func (param i32) (result f32))) + (type $FUNCSIG$di (func (param i32) (result f64))) + (type $FUNCSIG$ff (func (param f32) (result f32))) + (type $FUNCSIG$dd (func (param f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (memory $0 1) - (data (i32.const 8) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 64) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 112) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 168) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 216) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 272) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 328) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 384) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 408) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 464) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 512) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 536) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 560) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 584) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 608) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\00\00") - (data (i32.const 632) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 656) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 696) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 736) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 776) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 816) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 856) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 888) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") - (data (i32.const 928) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 976) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1032) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 1064) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00\18\04\00\00\18\04\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 1096) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1160) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1224) ">\00\00\00\01\00\00\00\10\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1304) "6\00\00\00\01\00\00\00\10\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1376) "$\00\00\00\01\00\00\00\0f\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 1432) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00p\05\00\00p\05\00\00$\00\00\00\t\00\00\00") - (data (i32.const 1464) "B\00\00\00\01\00\00\00\10\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1552) "V\00\00\00\01\00\00\00\10\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1656) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 1712) "\1d\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00") + (data (i32.const 8) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 64) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 112) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 320) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 376) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 416) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 472) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 496) "\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 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05") + (data (i32.const 568) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") + (data (i32.const 592) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 616) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 640) "\03\00\00\00\01\00\00\00\00\00\00\00\03") + (data (i32.const 664) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") + (data (i32.const 688) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 728) "\14\00\00\00\01\00\00\00\00\00\00\00\14") + (data (i32.const 768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01") + (data (i32.const 808) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 848) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 888) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c") + (data (i32.const 920) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01") + (data (i32.const 952) "\02") + (data (i32.const 960) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1008) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1064) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") + (data (i32.const 1096) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\008\04\00\008\04\00\00\0c\00\00\00\03") + (data (i32.const 1128) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1192) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1256) ">\00\00\00\01\00\00\00\01\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1336) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1408) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 1464) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\90\05\00\00\90\05\00\00$\00\00\00\t") + (data (i32.const 1496) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1584) "V\00\00\00\01\00\00\00\01\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") + (data (i32.const 1688) "\10\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\19\00\00\00\02\00\00\00I\00\00\00\02") (table $0 112 funcref) - (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) - (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) - (global $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) - (global $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT i32 (i32.const 1)) - (global $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) - (global $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) - (global $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) - (global $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) - (global $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) - (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) - (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) - (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $std/typedarray/arr (mut i32) (i32.const 0)) - (global $std/typedarray/af64 (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $std/typedarray/clampedArr (mut i32) (i32.const 0)) - (global $std/typedarray/arr8 (mut i32) (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $std/typedarray/sub8 (mut i32) (i32.const 0)) - (global $std/typedarray/arr32 (mut i32) (i32.const 0)) - (global $std/typedarray/sub32 (mut i32) (i32.const 0)) - (global $std/typedarray/MAX_F64LENGTH i32 (i32.const 134217726)) - (global $std/typedarray/multisubarr (mut i32) (i32.const 0)) - (global $std/typedarray/multisubarr1 (mut i32) (i32.const 0)) - (global $std/typedarray/multisubarr2 (mut i32) (i32.const 0)) - (global $std/typedarray/multisubarr3 (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues (mut i32) (i32.const 1080)) - (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1448)) + (global $std/typedarray/forEachValues i32 (i32.const 1112)) + (global $std/typedarray/testArrayReverseValues i32 (i32.const 1480)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 1712)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 1952)) (export "memory" (memory $0)) (export "main" (func $std/typedarray/main)) (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -121,16 +93,9 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -142,17 +107,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 local.get $3 + i32.const -4 + i32.and + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $3 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -167,44 +129,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $5 + local.set $2 + i32.const 0 else + local.get $2 i32.const 31 - local.get $3 + local.get $2 i32.clz i32.sub - local.set $4 - local.get $3 - local.get $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 + local.set $2 + local.get $3 + i32.const 7 i32.sub - i32.sub - local.set $4 end - local.get $4 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $5 + local.get $2 i32.const 16 i32.lt_u else @@ -220,111 +175,76 @@ unreachable end local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 i32.load offset=20 - local.set $7 - local.get $6 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 if - local.get $6 - local.get $7 + local.get $5 + local.get $4 i32.store offset=20 end - local.get $7 + local.get $4 if - local.get $7 - local.get $6 + local.get $4 + local.get $5 i32.store offset=16 end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 + i32.eq + if + local.get $3 i32.const 4 i32.shl - local.get $8 + local.get $2 i32.add i32.const 2 i32.shl + local.get $0 i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 + local.get $4 + i32.store offset=96 + local.get $4 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 i32.eqz if local.get $0 local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -341,12 +261,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) local.get $1 i32.eqz if @@ -359,8 +273,7 @@ end local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -372,43 +285,30 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - local.set $5 - local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 i32.const 1 i32.and if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.const 16 i32.add local.get $5 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.add - local.set $3 - local.get $3 + local.tee $2 i32.const 1073741808 i32.lt_u if @@ -416,50 +316,37 @@ local.get $4 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 + local.get $3 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or - local.tee $2 + local.tee $3 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 i32.load local.set $5 end end - local.get $2 + local.get $3 i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 + local.get $1 + i32.const 4 + i32.sub i32.load - local.set $6 - local.get $6 + local.tee $2 + i32.load + local.tee $6 i32.const 1 i32.and i32.eqz @@ -472,54 +359,48 @@ unreachable end local.get $6 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.const 16 i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.add - local.set $7 - local.get $7 + local.tee $7 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $2 local.get $6 i32.const 3 i32.and local.get $7 i32.or - local.tee $2 + local.tee $3 i32.store - local.get $3 - local.set $1 + local.get $2 + else + local.get $1 end + local.set $1 end local.get $4 local.get $5 i32.const 2 i32.or i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and - local.set $8 - local.get $8 + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $8 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -534,14 +415,13 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $1 i32.const 16 i32.add - local.get $8 + local.get $2 i32.add - local.get $4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 184 @@ -555,44 +435,37 @@ i32.sub local.get $1 i32.store - local.get $8 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $10 + local.set $4 + i32.const 0 else + local.get $2 i32.const 31 - local.get $8 + local.get $2 i32.clz i32.sub - local.set $9 - local.get $8 - local.get $9 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 + local.set $4 + local.get $2 + i32.const 7 i32.sub - i32.sub - local.set $9 end - local.get $9 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $10 + local.get $4 i32.const 16 i32.lt_u else @@ -607,124 +480,83 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $11 + local.get $2 i32.store offset=20 - local.get $11 + local.get $2 if - local.get $11 + local.get $2 local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 local.get $0 local.get $0 i32.load i32.const 1 - local.get $9 + local.get $3 i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + select + select i32.eqz if i32.const 0 @@ -734,23 +566,15 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 + local.get $0 + i32.load offset=1568 + local.tee $3 if local.get $1 - local.get $4 + local.get $3 i32.const 16 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 184 @@ -762,26 +586,23 @@ local.get $1 i32.const 16 i32.sub - local.get $4 + local.get $3 i32.eq if + local.get $3 + i32.load + local.set $4 local.get $1 i32.const 16 i32.sub local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop end else local.get $1 local.get $0 i32.const 1572 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 184 @@ -794,101 +615,54 @@ local.get $2 local.get $1 i32.sub - local.set $6 - local.get $6 + local.tee $2 i32.const 48 i32.lt_u if - i32.const 0 return end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 + local.get $4 i32.const 2 i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or i32.or i32.store - local.get $8 + local.get $1 i32.const 0 i32.store offset=16 - local.get $8 + local.get $1 i32.const 0 i32.store offset=20 local.get $1 - local.get $6 + local.get $2 i32.add i32.const 16 i32.sub - local.set $4 - local.get $4 - i32.const 0 + local.tee $2 i32.const 2 - i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end local.get $0 - local.get $8 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 ) (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/builtins/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 + i32.const 1 current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 + local.tee $0 i32.gt_s if (result i32) - local.get $2 - local.get $1 + i32.const 1 + local.get $0 i32.sub grow_memory i32.const 0 @@ -899,113 +673,70 @@ if unreachable end - local.get $0 - local.set $3 - local.get $3 + i32.const 1824 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 + i32.const 3392 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 23 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + local.get $0 + i32.const 2 + i32.shl + i32.const 1824 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 i32.const 16 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 1824 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $repeat|1 - unreachable end - unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + i32.const 1824 + i32.const 3408 current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop - local.get $3 + i32.const 1824 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 i32.const 1073741808 i32.ge_u @@ -1020,83 +751,64 @@ local.get $0 i32.const 15 i32.add - i32.const 15 - i32.const -1 - i32.xor + i32.const -16 i32.and - local.tee $1 + local.tee $0 + i32.const 16 + local.get $0 i32.const 16 - local.tee $2 - local.get $1 - local.get $2 i32.gt_u select ) (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 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 256 i32.lt_u - if - i32.const 0 - local.set $2 + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $3 + local.set $1 + i32.const 0 else local.get $1 i32.const 536870904 i32.lt_u - if (result i32) - local.get $1 + if i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub - else - local.get $1 + local.set $1 end - local.set $4 + local.get $1 i32.const 31 - local.get $4 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $4 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $3 + local.set $1 local.get $2 - i32.const 8 - i32.const 1 + i32.const 7 i32.sub - i32.sub - local.set $2 end - local.get $2 + local.tee $2 i32.const 23 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 16 i32.lt_u else @@ -1111,62 +823,49 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 i32.const -1 - i32.xor - local.get $3 + local.get $1 i32.shl i32.and - local.set $6 - local.get $6 - i32.eqz - if + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else local.get $0 i32.load - i32.const 0 i32.const -1 - i32.xor local.get $2 i32.const 1 i32.add i32.shl i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 + local.tee $1 + if (result i32) + local.get $1 i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 i32.eqz if i32.const 0 @@ -1176,85 +875,43 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 local.get $2 - local.set $5 - local.get $6 i32.ctz - local.set $4 - local.get $8 - local.get $5 + local.get $1 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 + else + i32.const 0 end - local.set $7 end - local.get $7 ) (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) current_memory - local.set $2 + local.tee $2 local.get $1 i32.const 65535 i32.add - i32.const 65535 - i32.const -1 - i32.xor + i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $3 + local.tee $1 local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 i32.gt_s select - local.set $6 - local.get $6 grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $1 grow_memory i32.const 0 i32.lt_s @@ -1262,30 +919,24 @@ unreachable end end - current_memory - local.set $7 local.get $0 local.get $2 i32.const 16 i32.shl - local.get $7 + current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop ) (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $1 i32.load local.set $3 local.get $2 i32.const 15 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 184 @@ -1295,22 +946,19 @@ unreachable end local.get $3 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and local.get $2 i32.sub - local.set $4 - local.get $4 + local.tee $4 i32.const 32 i32.ge_u if local.get $1 - local.get $2 local.get $3 i32.const 2 i32.and + local.get $2 i32.or i32.store local.get $1 @@ -1318,8 +966,7 @@ i32.add local.get $2 i32.add - local.set $5 - local.get $5 + local.tee $1 local.get $4 i32.const 16 i32.sub @@ -1327,48 +974,32 @@ i32.or i32.store local.get $0 - local.get $5 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $1 local.get $3 - i32.const 1 - i32.const -1 - i32.xor + i32.const -2 i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - i32.const 2 - i32.const -1 - i32.xor + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 i32.and i32.store end @@ -1376,24 +1007,21 @@ (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 + local.tee $2 i32.eqz if local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/growMemory local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 @@ -1404,15 +1032,12 @@ unreachable end end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and local.get $2 - i32.ge_u - i32.eqz + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u if i32.const 0 i32.const 184 @@ -1421,1573 +1046,100 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 local.get $2 - call $~lib/rt/tlsf/prepareBlock local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 ) (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if + local.tee $2 + if (result i32) + local.get $2 + else call $~lib/rt/tlsf/initializeRoot global.get $~lib/rt/tlsf/ROOT - local.set $2 end - local.get $2 local.get $0 call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 + local.tee $0 local.get $1 i32.store offset=8 - local.get $3 + local.get $0 i32.const 16 i32.add ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne if - i32.const 80 - i32.const 128 - i32.const 14 - i32.const 56 + i32.const 0 + i32.const 288 + i32.const 103 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 15 - call $~lib/rt/tlsf/__alloc - local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - end - local.tee $4 - local.get $3 - local.get $4 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store local.get $0 - local.get $3 + local.get $1 + i32.const 1 + i32.add i32.store offset=4 local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Int8Array#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 + call $~lib/rt/pure/onIncrement local.get $0 i32.load - i32.sub - ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/typedarray/Int8Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - ) - (func $~lib/typedarray/Uint8Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint8ClampedArray#get:length (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - ) - (func $~lib/typedarray/Int16Array#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Int16Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 - i32.shr_u - ) - (func $~lib/typedarray/Uint16Array#constructor (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint16Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 - i32.shr_u - ) - (func $~lib/typedarray/Int32Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Int32Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 2 - i32.shr_u - ) - (func $~lib/typedarray/Uint32Array#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint32Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 2 - i32.shr_u - ) - (func $~lib/typedarray/Int64Array#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Int64Array#get:length (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.shr_u - ) - (func $~lib/typedarray/Uint64Array#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Uint64Array#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.shr_u - ) - (func $~lib/typedarray/Float32Array#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Float32Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 2 - i32.shr_u - ) - (func $~lib/typedarray/Float64Array#constructor (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 27 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/typedarray/Float64Array#get:length (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.shr_u - ) - (func $std/typedarray/testInstantiate (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - i32.const 0 - local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 34 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 35 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/typedarray/Int8Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 39 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint8Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 41 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $3 - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 44 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 45 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 46 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.set $4 - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 49 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 50 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 51 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.set $5 - local.get $5 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 54 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 55 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 56 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 59 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 60 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 61 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.set $7 - local.get $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 64 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 65 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/typedarray/Uint32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 66 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.set $8 - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 69 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 70 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 71 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.set $9 - local.get $9 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 74 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 75 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $~lib/typedarray/Uint64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 76 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.set $10 - local.get $10 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 79 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 80 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $~lib/typedarray/Float32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 81 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.set $11 - local.get $11 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 84 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - local.get $0 - global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 85 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $~lib/typedarray/Float64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 86 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $11 - call $~lib/rt/purerc/__release - ) - (func $~lib/typedarray/Int32Array#__set (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 288 - i32.const 344 - i32.const 443 - i32.const 63 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/typedarray/Int32Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 288 - i32.const 344 - i32.const 437 - i32.const 63 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/typedarray/Int32Array#subarray (; 42 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - i32.const 22 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 - ) - (func $~lib/typedarray/Float64Array#__set (; 43 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 288 - i32.const 344 - i32.const 853 - i32.const 63 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (func $~lib/typedarray/Float64Array#subarray (; 44 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - i32.const 27 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 - ) - (func $~lib/util/sort/insertionSort (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - else - br $break|1 - end - br $continue|1 - end - end - end - local.get $0 - local.get $5 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - ) - (func $~lib/memory/memory.fill (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.get $4 - i32.store8 - local.get $5 - i32.const 2 - i32.add - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 3 - i32.add - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.get $7 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 12 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 8 - i32.sub - local.get $7 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 24 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 20 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 16 - i32.sub - local.get $7 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 - i32.sub - local.set $3 - local.get $7 - i64.extend_i32_u - local.get $7 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end - end - end - end - ) - (func $~lib/rt/tlsf/freeBlock (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 i32.const 1 i32.and - i32.eqz - i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1820 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/tlsf/freeBlock (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and if i32.const 0 i32.const 184 @@ -3007,7 +1159,1610 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/tlsf/__free (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/__typeinfo (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1688 + i32.load + i32.gt_u + if + i32.const 336 + i32.const 392 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1692 + i32.add + i32.load + ) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 + end + end + end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + local.get $2 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/pure/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 288 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 288 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__retainRelease (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.ne + if + local.get $1 + i32.const 1820 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + i32.const 1820 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + end + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 80 + i32.const 128 + i32.const 14 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $1 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 + ) + (func $~lib/typedarray/Int8Array#constructor (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Uint8Array#constructor (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Uint8ClampedArray#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Int16Array#constructor (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Uint16Array#constructor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Int32Array#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Uint32Array#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Int64Array#constructor (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Uint64Array#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Float32Array#constructor (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/typedarray/Float64Array#constructor (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 12 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + ) + (func $~lib/rt/pure/__release (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 1820 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $std/typedarray/testInstantiate (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 32 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 33 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 34 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.load offset=4 + local.get $2 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 38 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 39 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.load offset=4 + local.get $3 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 42 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 43 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 47 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=8 + local.get $0 + i32.const 1 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 48 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 49 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 52 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=8 + local.get $0 + i32.const 1 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 53 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 54 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.load offset=4 + local.get $6 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 57 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=8 + local.get $0 + i32.const 2 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 58 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 59 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Uint32Array#constructor + local.tee $7 + i32.load offset=4 + local.get $7 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 62 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.load offset=8 + local.get $0 + i32.const 2 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 63 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 64 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.load offset=4 + local.get $8 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 67 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 68 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 69 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Uint64Array#constructor + local.tee $9 + i32.load offset=4 + local.get $9 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 72 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 73 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 74 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Float32Array#constructor + local.tee $10 + i32.load offset=4 + local.get $10 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 77 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $10 + i32.load offset=8 + local.get $0 + i32.const 2 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 78 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $10 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 79 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Float64Array#constructor + local.tee $11 + i32.load offset=4 + local.get $11 + i32.load + i32.sub + if + i32.const 0 + i32.const 24 + i32.const 82 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 83 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $11 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $0 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 84 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + 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 + ) + (func $~lib/typedarray/Int32Array#__set (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 432 + i32.const 443 + i32.const 63 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (func $~lib/typedarray/Int32Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 432 + i32.const 437 + i32.const 63 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/typedarray/Int32Array#subarray (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + local.get $0 + local.get $1 + local.get $0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + local.tee $1 + local.get $0 + local.get $1 + local.get $0 + i32.gt_s + select + end + local.set $2 + i32.const 12 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + local.get $1 + i32.load + local.get $4 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $1 + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $0 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $4 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__retain + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + ) + (func $~lib/rt/pure/__skippedRelease (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 1820 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/typedarray/Float64Array#__set (; 41 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 432 + i32.const 853 + i32.const 63 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + ) + (func $~lib/typedarray/Float64Array#subarray (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + local.get $0 + local.get $1 + local.get $0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + local.tee $1 + local.get $0 + local.get $1 + local.get $0 + i32.gt_s + select + end + local.set $2 + i32.const 12 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + local.get $1 + i32.load + local.get $4 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $1 + local.get $4 + i32.load offset=4 + local.get $0 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $4 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__retain + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + ) + (func $~lib/util/sort/insertionSort (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 i32) + block $break|0 + loop $repeat|0 + local.get $3 + local.get $1 + i32.ge_s + br_if $break|0 + local.get $3 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $4 + loop $continue|1 + local.get $4 + i32.const 0 + i32.ge_s + if + block $break|1 + local.get $4 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 3 + i32.shl + local.get $0 + i32.add + local.get $6 + f64.store + br $continue|1 + end + end + end + local.get $4 + i32.const 1 + i32.add + i32.const 3 + i32.shl + local.get $0 + i32.add + local.get $5 + f64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $repeat|0 + unreachable + end + unreachable + end + ) + (func $~lib/memory/memory.fill (; 44 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.add + i32.const 1 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 2 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.get $1 + i32.store8 + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.const 2 + i32.sub + local.get $1 + i32.store8 + local.get $3 + i32.const 3 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 6 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 3 + i32.add + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.add + i32.const 4 + i32.sub + local.get $1 + i32.store8 + local.get $2 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.and + local.tee $2 + i32.sub + local.set $3 + local.get $0 + local.get $2 + i32.add + local.tee $2 + local.get $1 + i32.const 255 + i32.and + i32.const 16843009 + i32.mul + local.tee $0 + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $3 + local.get $2 + i32.add + i32.const 4 + i32.sub + local.get $0 + i32.store + local.get $3 + i32.const 8 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 4 + i32.add + local.get $0 + i32.store + local.get $2 + i32.const 8 + i32.add + local.get $0 + i32.store + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 12 + i32.sub + local.get $0 + i32.store + local.get $1 + i32.const 8 + i32.sub + local.get $0 + i32.store + local.get $3 + i32.const 24 + i32.le_u + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 + i32.const 12 + i32.add + local.get $0 + i32.store + local.get $2 + i32.const 16 + i32.add + local.get $0 + i32.store + local.get $2 + i32.const 20 + i32.add + local.get $0 + i32.store + local.get $2 + i32.const 24 + i32.add + local.get $0 + i32.store + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 28 + i32.sub + local.get $0 + i32.store + local.get $1 + i32.const 24 + i32.sub + local.get $0 + i32.store + local.get $1 + i32.const 20 + i32.sub + local.get $0 + i32.store + local.get $1 + i32.const 16 + i32.sub + local.get $0 + i32.store + local.get $2 + local.get $2 + i32.const 4 + i32.and + i32.const 24 + i32.add + local.tee $2 + i32.add + local.set $1 + local.get $3 + local.get $2 + i32.sub + local.set $2 + local.get $0 + i64.extend_i32_u + local.tee $4 + local.get $4 + i64.const 32 + i64.shl + i64.or + local.set $4 + loop $continue|0 + local.get $2 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $4 + i64.store + local.get $1 + i32.const 8 + i32.add + local.get $4 + i64.store + local.get $1 + i32.const 16 + i32.add + local.get $4 + i64.store + local.get $1 + i32.const 24 + i32.add + local.get $4 + i64.store + local.get $2 + i32.const 32 + i32.sub + local.set $2 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $continue|0 + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -3019,16 +2774,12 @@ unreachable end local.get $0 + i32.const 15 + i32.and + i32.eqz i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + local.get $0 + select i32.eqz if i32.const 0 @@ -3044,15 +2795,13 @@ i32.sub call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/sort/weakHeapSort (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f64) (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) + (local $7 f64) + (local $8 i32) local.get $1 i32.const 31 i32.add @@ -3060,429 +2809,358 @@ i32.shr_s i32.const 2 i32.shl - local.set $3 - local.get $3 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.tee $6 i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $repeat|0 - local.get $5 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $repeat|0 + block $break|0 + local.get $4 i32.const 0 - i32.gt_s - i32.eqz + i32.le_s br_if $break|0 - local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 + local.get $4 + local.set $3 + loop $continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $3 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 i32.const 1 i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + local.set $3 + br $continue|1 end end - local.get $6 + local.get $3 i32.const 1 i32.shr_s + local.tee $3 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load + local.set $5 + local.get $4 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load local.set $7 - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $0 + i32.const 2 + global.set $~lib/argc local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end + local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if local.get $4 - local.get $5 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 i32.const 5 i32.shr_s i32.const 2 i32.shl + local.get $6 i32.add + local.tee $8 + local.get $8 i32.load i32.const 1 - local.get $5 + local.get $4 i32.const 31 i32.and i32.shl i32.xor i32.store + local.get $4 + i32.const 3 + i32.shl local.get $0 + i32.add local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $8 f64.store - local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl + local.get $0 i32.add - local.get $9 + local.get $7 f64.store end - local.get $5 + local.get $4 i32.const 1 i32.sub - local.set $5 + local.set $4 br $repeat|0 - unreachable end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $7 - loop $repeat|2 - local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $repeat|2 + block $break|2 + local.get $4 i32.const 2 - i32.ge_s - i32.eqz + i32.lt_s br_if $break|2 local.get $0 f64.load - local.set $9 + local.set $5 local.get $0 - local.get $0 - local.get $7 + local.get $4 i32.const 3 i32.shl + local.get $0 i32.add + local.tee $1 f64.load f64.store - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.get $9 + local.get $1 + local.get $5 f64.store i32.const 1 - local.set $6 - block $break|3 - loop $continue|3 - local.get $6 - i32.const 1 + local.set $3 + loop $continue|3 + local.get $3 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + local.get $3 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.set $3 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + f64.load + local.set $5 + local.get $3 + i32.const 3 i32.shl - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s + local.get $0 + i32.add + f64.load + local.set $7 i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $5 + global.set $~lib/argc + local.get $5 local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 i32.lt_s if - local.get $5 - local.set $6 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $6 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $9 - local.get $0 + local.get $3 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl local.get $6 + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const 1 + local.get $3 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $3 i32.const 3 i32.shl + local.get $0 i32.add - f64.load - local.set $8 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $9 - local.get $8 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $6 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - f64.store - end - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|4 + local.get $5 + f64.store + local.get $0 + local.get $7 + f64.store end + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $continue|4 end end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $repeat|2 - unreachable end - unreachable end - local.get $4 + local.get $6 call $~lib/rt/tlsf/__free local.get $0 f64.load offset=8 - local.set $10 + local.set $5 local.get $0 local.get $0 f64.load f64.store offset=8 local.get $0 - local.get $10 + local.get $5 f64.store ) - (func $~lib/typedarray/Float64Array#sort (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + (local $4 f64) + (local $5 f64) + block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $4 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 i32.const 1 i32.le_s if - local.get $3 + local.get $2 + call $~lib/rt/pure/__release br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $3 + local.get $2 i32.load offset=4 - local.set $5 - local.get $4 + local.set $0 + local.get $3 i32.const 2 i32.eq if - local.get $5 + local.get $0 f64.load offset=8 - local.set $6 - local.get $5 + local.set $4 + local.get $0 f64.load - local.set $7 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $6 - local.get $7 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if + local.get $0 local.get $5 - local.get $7 f64.store offset=8 - local.get $5 - local.get $6 + local.get $0 + local.get $4 f64.store end - local.get $3 + local.get $2 + call $~lib/rt/pure/__release br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end - block $~lib/util/sort/SORT|inlined.0 - local.get $5 - local.set $10 - local.get $4 - local.set $9 - local.get $2 - local.set $8 - local.get $9 - i32.const 256 - i32.lt_s - if - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/insertionSort - else - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/weakHeapSort - end - end local.get $3 + i32.const 256 + i32.lt_s + if + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/sort/insertionSort + else + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort + end end - local.tee $5 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $5 - call $~lib/rt/purerc/__release - local.get $4 + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 51 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 48 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 i64.reinterpret_f64 - local.set $2 + local.tee $2 + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $2 local.get $1 i64.reinterpret_f64 - local.set $3 - local.get $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $2 - local.get $3 + local.tee $3 local.get $3 i64.const 63 i64.shr_s i64.const 1 i64.shr_u i64.xor - local.set $3 - local.get $2 - local.get $3 + local.tee $3 i64.gt_s local.get $2 local.get $3 i64.lt_s i32.sub ) - (func $~lib/typedarray/Float64Array#sort|trampoline (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array#sort - ) - (func $~lib/typedarray/Float64Array#__get (; 53 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/typedarray/Float64Array#__get (; 49 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -3490,8 +3168,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 847 i32.const 63 call $~lib/builtins/abort @@ -3505,14 +3183,14 @@ i32.add f64.load ) - (func $~lib/typedarray/Uint8ClampedArray#__set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#__set (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 197 i32.const 44 call $~lib/builtins/abort @@ -3522,11 +3200,6 @@ i32.load offset=4 local.get $1 i32.add - local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor i32.const 255 local.get $2 i32.sub @@ -3534,17 +3207,22 @@ i32.shr_s local.get $2 i32.or + local.get $2 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor i32.and i32.store8 ) - (func $~lib/typedarray/Uint8ClampedArray#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#__get (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 191 i32.const 44 call $~lib/builtins/abort @@ -3556,14 +3234,14 @@ i32.add i32.load8_u ) - (func $~lib/typedarray/Int8Array#__set (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 33 i32.const 44 call $~lib/builtins/abort @@ -3576,420 +3254,121 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Int8Array#fill (; 57 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int8Array#fill (; 53 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - block $~lib/typedarray/FILL<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - i32.load offset=4 - local.set $8 - local.get $7 - call $~lib/typedarray/Int8Array#get:length - local.set $9 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $5 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $5 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $5 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $4 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $4 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $4 - local.get $5 - local.get $4 - i32.lt_s - if - local.get $8 - local.get $5 - i32.add - local.get $6 - local.get $4 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - end - local.get $7 - end - local.tee $9 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $9 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $~lib/rt/purerc/increment (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) local.get $0 + call $~lib/rt/pure/__retain + local.tee $5 i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/purerc/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/memory/memory.copy (; 60 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 + local.set $6 + local.get $5 + i32.load offset=8 + local.set $4 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $2 - local.set $3 - local.get $5 local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 local.get $4 - i32.lt_u - if - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - end - else - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end + local.get $2 + local.get $4 + i32.lt_s + select end + local.tee $2 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $4 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_s + select + end + local.tee $0 + i32.lt_s + if + local.get $2 + local.get $6 + i32.add + local.get $1 + local.get $0 + local.get $2 + i32.sub + call $~lib/memory/memory.fill + end + local.get $5 + call $~lib/rt/pure/__retain + local.set $0 + local.get $5 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/rt/common/__allocArray (; 61 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 54 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 16 local.get $2 call $~lib/rt/tlsf/__alloc - local.set $4 + local.tee $2 local.get $0 local.get $1 i32.shl - local.set $5 - local.get $5 - i32.const 15 + local.tee $1 + i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain i32.store + local.get $2 local.get $4 - local.get $6 i32.store offset=4 - local.get $4 - local.get $5 + local.get $2 + local.get $1 i32.store offset=8 - local.get $4 + local.get $2 local.get $0 i32.store offset=12 local.get $3 if - local.get $6 + local.get $4 local.get $3 - local.get $5 + local.get $1 call $~lib/memory/memory.copy end - local.get $4 + local.get $2 ) - (func $~lib/array/Array#get:length (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int8Array#__get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 27 i32.const 44 call $~lib/builtins/abort @@ -4001,337 +3380,267 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__unchecked_get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_s - ) - (func $~lib/array/Array#__get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 - i32.const 0 - i32.shr_u i32.ge_u if - i32.const 288 - i32.const 480 + i32.const 336 + i32.const 512 i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__unchecked_get + i32.add + i32.load8_s ) - (func $std/typedarray/isInt8ArrayEqual (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $2 + block $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release + i32.load offset=8 local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - end - block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - end + i32.load offset=12 + i32.ne + br_if $folding-inner0 + local.get $0 + i32.load offset=8 + local.set $3 loop $repeat|0 local.get $2 local.get $3 i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne if - i32.const 0 - local.set $4 local.get $0 - call $~lib/rt/purerc/__release + local.get $2 + call $~lib/typedarray/Int8Array#__get local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Int8Array#subarray (; 67 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - i32.const 17 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 - ) - (func $~lib/typedarray/Int32Array#fill (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - block $~lib/typedarray/FILL<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - i32.load offset=4 - local.set $8 - local.get $7 - call $~lib/typedarray/Int32Array#get:length - local.set $9 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $5 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $5 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $5 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $4 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $4 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $4 - block $break|0 - loop $repeat|0 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 + local.get $2 + call $~lib/array/Array#__get + i32.ne + br_if $folding-inner0 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $repeat|0 - unreachable end - unreachable end - local.get $7 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 1 + return end - local.tee $9 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $9 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $~lib/array/Array#get:length (; 69 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=12 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 0 ) - (func $~lib/array/Array#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $4 + i32.load offset=8 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $1 + local.get $0 + local.get $1 + local.get $0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + local.tee $1 + local.get $0 + local.get $1 + local.get $0 + i32.gt_s + select + end + local.set $2 + i32.const 12 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + local.get $1 + i32.load + local.get $4 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $1 + local.get $4 + i32.load offset=4 + local.get $0 + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $0 + i32.sub + i32.store offset=8 + local.get $4 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__retain + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + ) + (func $~lib/typedarray/Int32Array#fill (; 59 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.set $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $4 + i32.load offset=4 + local.set $6 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $1 + local.get $2 + local.get $1 + i32.lt_s + select + end + local.set $0 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.lt_s + select + end + local.set $1 + loop $repeat|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.get $5 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + local.get $4 + call $~lib/rt/pure/__retain + local.set $0 + local.get $4 + call $~lib/rt/pure/__release + local.get $0 + ) + (func $~lib/array/Array#__get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 512 + i32.const 100 + i32.const 61 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 local.get $1 @@ -4340,229 +3649,160 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 288 - i32.const 480 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $std/typedarray/isInt32ArrayEqual (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/purerc/__release + block $folding-inner0 local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - end - block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - end + i32.load offset=12 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ne + br_if $folding-inner0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 loop $repeat|0 local.get $2 local.get $3 i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $2 - call $~lib/typedarray/Int32Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne if - i32.const 0 - local.set $4 local.get $0 - call $~lib/rt/purerc/__release + local.get $2 + call $~lib/typedarray/Int32Array#__get local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return + local.get $2 + call $~lib/array/Array#__get + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - unreachable end - unreachable + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 1 + return end - i32.const 1 - local.set $3 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + i32.const 0 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 62 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $3 + call $~lib/rt/pure/__release local.get $0 local.get $1 i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 ) - (func $~lib/typedarray/Int8Array#reduce (; 74 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 75 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Int8Array#reduce (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + local.set $4 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + local.get $3 + i32.add + i32.load8_s + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 64 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 0 + local.get $0 call $~lib/typedarray/Int8Array#reduce - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.const 255 + i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 115 i32.const 44 call $~lib/builtins/abort @@ -4575,249 +3815,128 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 77 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/typedarray/Uint8Array#reduce (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + local.set $4 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + local.set $5 + loop $repeat|0 + local.get $0 + local.get $5 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) local.set $3 - local.get $7 + local.get $0 i32.const 1 i32.add - local.set $7 + local.set $0 br $repeat|0 - unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $3 - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 79 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 67 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 3 - i32.const 0 call $~lib/typedarray/Uint8Array#reduce - local.set $2 - local.get $2 i32.const 255 i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (; 81 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 82 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 68 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#reduce - local.set $2 - local.get $2 + call $~lib/typedarray/Uint8Array#reduce i32.const 255 i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4825,8 +3944,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 279 i32.const 63 call $~lib/builtins/abort @@ -4841,130 +3960,91 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/typedarray/Int16Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 86 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Int16Array#reduce (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_s + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 71 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 5 - i32.const 0 + local.get $0 call $~lib/typedarray/Int16Array#reduce - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.const 65535 + i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#__set (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 72 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4972,8 +4052,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 361 i32.const 63 call $~lib/builtins/abort @@ -4988,247 +4068,175 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/typedarray/Uint16Array#reduce (; 89 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 90 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Uint16Array#reduce (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_u + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 74 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 6 - i32.const 0 + local.get $0 call $~lib/typedarray/Uint16Array#reduce - local.set $2 - local.get $2 i32.const 65535 i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + local.set $4 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $5 + loop $repeat|0 + local.get $0 + local.get $5 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.const 2 + i32.shl + local.get $4 + i32.add + i32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) local.set $3 - local.get $7 + local.get $0 i32.const 1 i32.add - local.set $7 + local.set $0 br $repeat|0 - unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $3 - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 93 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 76 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 7 - i32.const 0 call $~lib/typedarray/Int32Array#reduce - local.set $2 - local.get $2 i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -5236,8 +4244,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 525 i32.const 63 call $~lib/builtins/abort @@ -5252,126 +4260,44 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/typedarray/Uint32Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 97 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 78 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 8 - i32.const 0 - call $~lib/typedarray/Uint32Array#reduce - local.set $2 - local.get $2 + call $~lib/typedarray/Int32Array#reduce i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#__set (; 98 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 79 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5379,8 +4305,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 607 i32.const 63 call $~lib/builtins/abort @@ -5395,127 +4321,101 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 99 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 80 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $3 + call $~lib/rt/pure/__release local.get $0 local.get $1 i64.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 ) - (func $~lib/typedarray/Int64Array#reduce (; 100 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i32) + (func $~lib/typedarray/Int64Array#reduce (; 81 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $5 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 + local.set $4 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $5 + loop $repeat|0 + local.get $0 + local.get $5 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.const 3 + i32.shl local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$jjjii) - end - local.set $5 - local.get $7 + i32.add + i64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$jjjii) + local.set $3 + local.get $0 i32.const 1 i32.add - local.set $7 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $5 - local.set $9 - local.get $4 - call $~lib/rt/purerc/__release - local.get $9 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 101 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 82 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i64) - i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 9 - i64.const 0 call $~lib/typedarray/Int64Array#reduce - local.set $2 - local.get $2 i64.const 6 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 102 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 83 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5523,8 +4423,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 689 i32.const 63 call $~lib/builtins/abort @@ -5539,127 +4439,44 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 103 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/typedarray/Uint64Array#reduce (; 104 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint64Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$jjjii) - end - local.set $5 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $5 - local.set $9 - local.get $4 - call $~lib/rt/purerc/__release - local.get $9 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 105 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 84 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i64) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 10 - i64.const 0 - call $~lib/typedarray/Uint64Array#reduce - local.set $2 - local.get $2 + call $~lib/typedarray/Int64Array#reduce i64.const 6 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#__set (; 106 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 85 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -5667,8 +4484,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 771 i32.const 63 call $~lib/builtins/abort @@ -5683,1815 +4500,1163 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 107 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - (local $4 f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 86 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $3 + call $~lib/rt/pure/__release local.get $0 local.get $1 f32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 ) - (func $~lib/typedarray/Float32Array#reduce (; 108 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $4 - call $~lib/typedarray/Float32Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result f32) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$fffii) - end - local.set $5 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $5 - local.set $9 - local.get $4 - call $~lib/rt/purerc/__release - local.get $9 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 109 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Float32Array#reduce (; 87 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 i32) (local $2 f32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 2 + i32.shl + local.get $3 + i32.add + f32.load + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 88 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 11 - f32.const 0 + local.get $0 call $~lib/typedarray/Float32Array#reduce - local.set $2 - local.get $2 f32.const 6 - f32.eq - i32.eqz + f32.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 110 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - (local $4 f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 89 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $3 + call $~lib/rt/pure/__release local.get $0 local.get $1 f64.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 ) - (func $~lib/typedarray/Float64Array#reduce (; 111 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $6 - block $break|0 - block - i32.const 0 - local.set $7 - local.get $4 - call $~lib/typedarray/Float64Array#get:length - local.set $8 - end - loop $repeat|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - block (result f64) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$dddii) - end - local.set $5 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $5 - local.set $9 - local.get $4 - call $~lib/rt/purerc/__release - local.get $9 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 112 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Float64Array#reduce (; 90 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 3 + i32.shl + local.get $3 + i32.add + f64.load + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 91 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 12 - f64.const 0 + local.get $0 call $~lib/typedarray/Float64Array#reduce - local.set $2 - local.get $2 f64.const 6 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 113 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reduceRight (; 114 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $7 - local.get $5 - call $~lib/rt/purerc/__release - local.get $7 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 115 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 0 + (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + local.get $3 + i32.add + i32.load8_s + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 93 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 13 - i32.const 0 + local.get $0 call $~lib/typedarray/Int8Array#reduceRight - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.const 255 + i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 116 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 117 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 local.set $4 local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.load offset=8 + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) local.set $3 - local.get $7 + local.get $0 i32.const 1 i32.sub - local.set $7 + local.set $0 br $repeat|0 - unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $3 - local.set $7 - local.get $5 - call $~lib/rt/purerc/__release - local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 118 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 95 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 14 - i32.const 0 call $~lib/typedarray/Uint8Array#reduceRight - local.set $2 - local.get $2 i32.const 255 i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 119 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 120 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $7 - local.get $5 - call $~lib/rt/purerc/__release - local.get $7 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 121 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 96 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 15 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#reduceRight - local.set $2 - local.get $2 + call $~lib/typedarray/Uint8Array#reduceRight i32.const 255 i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 122 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reduceRight (; 123 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $7 - local.get $5 - call $~lib/rt/purerc/__release - local.get $7 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 124 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 0 + (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_s + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 98 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Int16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 16 - i32.const 0 + local.get $0 call $~lib/typedarray/Int16Array#reduceRight - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 279 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 125 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 126 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $7 - local.get $5 - call $~lib/rt/purerc/__release - local.get $7 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 127 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 17 - i32.const 0 - call $~lib/typedarray/Uint16Array#reduceRight - local.set $2 - local.get $2 i32.const 65535 i32.and i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 128 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reduceRight (; 129 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $7 - local.get $5 - call $~lib/rt/purerc/__release - local.get $7 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 130 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 1 + i32.shl + local.get $3 + i32.add + i32.load16_u + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 100 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + call $~lib/typedarray/Uint16Array#reduceRight + i32.const 65535 + i32.and + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 290 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + ) + (func $~lib/typedarray/Int32Array#reduceRight (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.const 2 + i32.shl + local.get $4 + i32.add + i32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $repeat|0 + end + end + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 102 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Int32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 18 - i32.const 0 call $~lib/typedarray/Int32Array#reduceRight - local.set $2 - local.get $2 i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 131 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#reduceRight (; 132 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.set $7 - local.get $5 - call $~lib/rt/purerc/__release - local.get $7 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 133 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 103 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 19 - i32.const 0 - call $~lib/typedarray/Uint32Array#reduceRight - local.set $2 - local.get $2 + call $~lib/typedarray/Int32Array#reduceRight i32.const 6 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 134 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reduceRight (; 135 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i32) + (func $~lib/typedarray/Int64Array#reduceRight (; 104 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i64) local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 - local.set $6 - block $break|0 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$jjjii) - end - local.set $5 - local.get $7 + local.set $4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.const 3 + i32.shl + local.get $4 + i32.add + i64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$jjjii) + local.set $3 + local.get $0 i32.const 1 i32.sub - local.set $7 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $5 - local.set $8 - local.get $4 - call $~lib/rt/purerc/__release - local.get $8 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 136 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 105 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i64) - i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 20 - i64.const 0 call $~lib/typedarray/Int64Array#reduceRight - local.set $2 - local.get $2 i64.const 6 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 137 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#reduceRight (; 138 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i64) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $4 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$jjjii) - end - local.set $5 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $5 - local.set $8 - local.get $4 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 139 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 106 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i64) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 21 - i64.const 0 - call $~lib/typedarray/Uint64Array#reduceRight - local.set $2 - local.get $2 + call $~lib/typedarray/Int64Array#reduceRight i64.const 6 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 140 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - (local $4 f32) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - f32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reduceRight (; 141 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $4 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result f32) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$fffii) - end - local.set $5 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $5 - local.set $8 - local.get $4 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 142 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Float32Array#reduceRight (; 107 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) (local $1 i32) (local $2 f32) - i32.const 0 + (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 2 + i32.shl + local.get $3 + i32.add + f32.load + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 108 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 22 - f32.const 0 + local.get $0 call $~lib/typedarray/Float32Array#reduceRight - local.set $2 - local.get $2 f32.const 6 - f32.eq - i32.eqz + f32.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 143 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - (local $4 f64) - local.get $3 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - local.get $1 - f64.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reduceRight (; 144 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - local.set $3 - local.get $2 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $6 - block $break|0 - local.get $4 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $repeat|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result f64) - i32.const 4 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $4 - local.get $3 - call_indirect (type $FUNCSIG$dddii) - end - local.set $5 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $5 - local.set $8 - local.get $4 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 145 ;) (type $FUNCSIG$v) - (local $0 i32) + (func $~lib/typedarray/Float64Array#reduceRight (; 109 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 f64) - i32.const 0 + (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $repeat|0 + local.get $0 + i32.const 0 + i32.ge_s + if + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.const 3 + i32.shl + local.get $3 + i32.add + f64.load + local.get $0 + local.get $1 + call $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $repeat|0 + end + end + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 110 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) i32.const 3 call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 23 - f64.const 0 + local.get $0 call $~lib/typedarray/Float64Array#reduceRight - local.set $2 - local.get $2 f64.const 6 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 111 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 local.get $0 i32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Int8Array#map (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Int8Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int8Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + local.get $6 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load8_s + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 148 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 113 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 24 + local.get $0 call $~lib/typedarray/Int8Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#map (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + local.get $6 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Uint8Array#__get (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 115 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 109 i32.const 44 call $~lib/builtins/abort @@ -7503,266 +5668,204 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 152 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 116 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 25 + local.get $0 call $~lib/typedarray/Uint8Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + local.get $6 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 155 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 118 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 26 + local.get $0 call $~lib/typedarray/Uint8ClampedArray#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Int16Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7770,82 +5873,67 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Int16Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 1 + i32.shl + local.tee $7 + local.get $4 + i32.add + i32.load16_s + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Int16Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7853,8 +5941,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 273 i32.const 63 call $~lib/builtins/abort @@ -7868,95 +5956,76 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 159 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 121 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 27 + local.get $0 call $~lib/typedarray/Int16Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7964,82 +6033,67 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Uint16Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint16Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 1 + i32.shl + local.tee $7 + local.get $4 + i32.add + i32.load16_u + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Uint16Array#__get (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8047,8 +6101,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 355 i32.const 63 call $~lib/builtins/abort @@ -8062,95 +6116,76 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 163 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 124 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 28 + local.get $0 call $~lib/typedarray/Uint16Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8158,170 +6193,136 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int32Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + i32.load + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 166 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 126 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 29 + local.get $0 call $~lib/typedarray/Int32Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#map (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8329,82 +6330,67 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Uint32Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + i32.load + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Uint32Array#__get (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8412,8 +6398,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 519 i32.const 63 call $~lib/builtins/abort @@ -8427,178 +6413,154 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 170 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 129 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 30 + local.get $0 call $~lib/typedarray/Uint32Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 171 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 130 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 local.get $0 i64.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Int64Array#map (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 131 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + (local $8 i64) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Int64Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - block (result i64) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$jjii) - end - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl + local.tee $7 + local.get $4 + i32.add + i64.load + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Int64Array#__get (; 173 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 132 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -8606,8 +6568,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 601 i32.const 63 call $~lib/builtins/abort @@ -8621,178 +6583,144 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 174 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 133 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 31 + local.get $0 call $~lib/typedarray/Int64Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 175 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $0 - i64.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/typedarray/Uint64Array#map (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 134 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + (local $8 i64) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Uint64Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint64Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - block (result i64) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$jjii) - end - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl + local.tee $7 + local.get $4 + i32.add + i64.load + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Uint64Array#__get (; 177 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 135 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -8800,8 +6728,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 683 i32.const 63 call $~lib/builtins/abort @@ -8815,178 +6743,154 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 178 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 136 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 32 + local.get $0 call $~lib/typedarray/Uint64Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 - i64.eq - i32.eqz + i64.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 179 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 137 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 local.get $0 f32.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Float32Array#map (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + (local $8 f32) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Float32Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Float32Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - block (result f32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ffii) - end - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl + local.tee $7 + local.get $4 + i32.add + f32.load + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Float32Array#__get (; 181 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 139 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -8994,8 +6898,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 765 i32.const 63 call $~lib/builtins/abort @@ -9009,3601 +6913,2336 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 182 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 140 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 33 + local.get $0 call $~lib/typedarray/Float32Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 - f32.eq - i32.eqz + f32.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 - f32.eq - i32.eqz + f32.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 - f32.eq - i32.eqz + f32.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 183 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) - (local $3 f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 141 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 local.get $0 f64.mul - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Float64Array#map (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + (local $8 f64) + local.get $0 + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + local.get $1 + i32.load offset=4 + local.set $4 + local.get $2 + call $~lib/typedarray/Float64Array#constructor + local.tee $5 + call $~lib/rt/pure/__retain + local.tee $3 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $0 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Float64Array#constructor - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - block (result f64) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ddii) - end - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable - end - unreachable + local.get $2 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl + local.tee $7 + local.get $4 + i32.add + f64.load + local.get $0 + local.get $1 + call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 + local.set $8 + local.get $6 + local.get $7 + i32.add + local.get $8 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $9 end - local.tee $8 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $8 - call $~lib/rt/purerc/__release - local.get $7 + local.get $1 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__retain + local.set $0 + local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 185 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 143 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor + local.tee $2 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 34 + local.get $0 call $~lib/typedarray/Float64Array#map - local.set $2 - local.get $2 + local.tee $1 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 144 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.const 255 + i32.and i32.const 2 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Int8Array#some (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.add + i32.load8_s + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.eq - local.set $3 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $0 + i32.const 255 + i32.and + i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 189 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 147 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 35 call $~lib/typedarray/Int8Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 36 call $~lib/typedarray/Int8Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#some (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.add + i32.load8_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 193 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 149 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 37 call $~lib/typedarray/Uint8Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 38 call $~lib/typedarray/Uint8Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 197 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 150 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 39 - call $~lib/typedarray/Uint8ClampedArray#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne + call $~lib/typedarray/Uint8Array#some i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 40 - call $~lib/typedarray/Uint8ClampedArray#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz + call $~lib/typedarray/Uint8Array#some if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + call $~lib/rt/pure/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 151 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 65535 + i32.and i32.const 2 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Int16Array#some (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 1 + i32.shl local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.add + i32.load16_s + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 0 - i32.eq - local.set $3 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $0 + i32.const 65535 + i32.and + i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 201 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 154 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 41 call $~lib/typedarray/Int16Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 42 call $~lib/typedarray/Int16Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#some (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 1 + i32.shl local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.add + i32.load16_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 205 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 156 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 43 call $~lib/typedarray/Uint16Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 44 call $~lib/typedarray/Uint16Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 i32.const 2 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Int32Array#some (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.add + i32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 159 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop - local.get $0 - i32.const 0 - i32.eq - local.set $3 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $0 + i32.eqz ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 209 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 160 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 45 call $~lib/typedarray/Int32Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 46 call $~lib/typedarray/Int32Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#some (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 213 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 161 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 47 - call $~lib/typedarray/Uint32Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne + call $~lib/typedarray/Int32Array#some i32.eqz if i32.const 0 i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 48 - call $~lib/typedarray/Uint32Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 338 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 48 + call $~lib/typedarray/Int32Array#some + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 214 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 162 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 i64.const 2 i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Int64Array#some (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end + i32.add + i64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$ijii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 216 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 164 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 i64.const 0 i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 217 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 165 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 49 call $~lib/typedarray/Int64Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 50 call $~lib/typedarray/Int64Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 218 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#some (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end - if - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i64.const 0 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 221 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 166 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 51 - call $~lib/typedarray/Uint64Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne + call $~lib/typedarray/Int64Array#some i32.eqz if i32.const 0 i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 52 - call $~lib/typedarray/Uint64Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 338 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 52 + call $~lib/typedarray/Int64Array#some + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 222 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 167 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 f32.const 2 f32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Float32Array#some (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ifii) - end + i32.add + f32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$ifii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 224 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 169 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 f32.const 0 f32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 225 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 170 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 53 call $~lib/typedarray/Float32Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 54 - call $~lib/typedarray/Float32Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 338 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 54 + call $~lib/typedarray/Float32Array#some + if + i32.const 0 + i32.const 24 + i32.const 349 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 226 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 171 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 f64.const 2 f64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/typedarray/Float64Array#some (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$idii) - end + i32.add + f64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$idii) if + local.get $2 + call $~lib/rt/pure/__release i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 0 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 228 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 173 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 f64.const 0 f64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 229 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 174 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 55 call $~lib/typedarray/Float64Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 56 call $~lib/typedarray/Float64Array#some - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#findIndex (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - i32.const 1 i32.add - local.set $5 - br $repeat|0 + i32.load8_s + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 176 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 255 + i32.and i32.const 4 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 233 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 177 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 57 call $~lib/typedarray/Int8Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 58 call $~lib/typedarray/Int8Array#findIndex - local.set $3 - local.get $3 i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#findIndex (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 i32.add - local.set $5 - br $repeat|0 + i32.load8_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 237 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 179 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 59 call $~lib/typedarray/Uint8Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 60 call $~lib/typedarray/Uint8Array#findIndex - local.set $3 - local.get $3 i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 241 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 180 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 61 - call $~lib/typedarray/Uint8ClampedArray#findIndex - local.set $2 - local.get $2 + call $~lib/typedarray/Uint8Array#findIndex i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 62 - call $~lib/typedarray/Uint8ClampedArray#findIndex - local.set $3 - local.get $3 + call $~lib/typedarray/Uint8Array#findIndex i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#findIndex (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 i32.const 1 + i32.shl + local.get $3 i32.add - local.set $5 - br $repeat|0 + i32.load16_s + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 182 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 65535 + i32.and i32.const 4 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 245 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 183 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 63 call $~lib/typedarray/Int16Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 64 call $~lib/typedarray/Int16Array#findIndex - local.set $3 - local.get $3 i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#findIndex (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 i32.const 1 + i32.shl + local.get $3 i32.add - local.set $5 - br $repeat|0 + i32.load16_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop local.get $0 - i32.const 65535 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 249 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 185 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 65 call $~lib/typedarray/Uint16Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 66 call $~lib/typedarray/Uint16Array#findIndex - local.set $3 - local.get $3 i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#findIndex (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - i32.const 1 i32.add - local.set $5 - br $repeat|0 + i32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end + local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 187 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 i32.const 4 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 253 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 188 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 67 call $~lib/typedarray/Int32Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 68 call $~lib/typedarray/Int32Array#findIndex - local.set $3 - local.get $3 i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#findIndex (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 256 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 257 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 189 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 69 - call $~lib/typedarray/Uint32Array#findIndex - local.set $2 - local.get $2 + call $~lib/typedarray/Int32Array#findIndex i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 70 - call $~lib/typedarray/Uint32Array#findIndex - local.set $3 - local.get $3 + call $~lib/typedarray/Int32Array#findIndex i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 258 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#findIndex (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - i32.const 1 i32.add - local.set $5 - br $repeat|0 + i64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$ijii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end + local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 260 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 191 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 i64.const 4 i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 261 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 192 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 71 call $~lib/typedarray/Int64Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 72 call $~lib/typedarray/Int64Array#findIndex - local.set $3 - local.get $3 i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 262 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#findIndex (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 264 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i64.const 4 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 265 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 193 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 73 - call $~lib/typedarray/Uint64Array#findIndex - local.set $2 - local.get $2 + call $~lib/typedarray/Int64Array#findIndex i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 74 - call $~lib/typedarray/Uint64Array#findIndex - local.set $3 - local.get $3 + call $~lib/typedarray/Int64Array#findIndex i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 266 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#findIndex (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ifii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - i32.const 1 i32.add - local.set $5 - br $repeat|0 + f32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$ifii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end + local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 268 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 195 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 f32.const 4 f32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 269 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 196 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 75 call $~lib/typedarray/Float32Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 76 call $~lib/typedarray/Float32Array#findIndex - local.set $3 - local.get $3 i32.const -1 - i32.eq - i32.eqz + i32.ne if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 270 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#findIndex (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$idii) - end - if - local.get $5 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - i32.const 1 i32.add - local.set $5 - br $repeat|0 + f64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$idii) + if + local.get $2 + call $~lib/rt/pure/__release + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const -1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 + local.set $0 end + local.get $0 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 272 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 198 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $2 + call $~lib/rt/pure/__release local.get $0 f64.const 4 f64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 273 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 199 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 77 call $~lib/typedarray/Float64Array#findIndex - local.set $2 - local.get $2 i32.const 1 - i32.eq - i32.eqz + i32.ne if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 78 - call $~lib/typedarray/Float64Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq - i32.eqz - if - i32.const 992 - i32.const 24 - i32.const 368 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 78 + call $~lib/typedarray/Float64Array#findIndex + i32.const -1 + i32.ne + if + i32.const 1024 + i32.const 24 + i32.const 379 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 24 @@ -12612,479 +9251,267 @@ i32.shr_s i32.const 2 i32.rem_s - i32.const 0 - i32.eq - local.set $3 + i32.eqz + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Int8Array#every (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + i32.add + i32.load8_s + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 277 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 202 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 79 call $~lib/typedarray/Int8Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 80 call $~lib/typedarray/Int8Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#every (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + i32.const 1 + i32.and + i32.eqz + ) + (func $~lib/typedarray/Uint8Array#every (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + i32.add + i32.load8_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 281 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 205 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 81 call $~lib/typedarray/Uint8Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 82 call $~lib/typedarray/Uint8Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 285 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 206 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 83 - call $~lib/typedarray/Uint8ClampedArray#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne + call $~lib/typedarray/Uint8Array#every i32.eqz if i32.const 0 i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 84 - call $~lib/typedarray/Uint8ClampedArray#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 398 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 84 + call $~lib/typedarray/Uint8Array#every + if + i32.const 0 + i32.const 24 + i32.const 409 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 207 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 16 @@ -13093,1799 +9520,1123 @@ i32.shr_s i32.const 2 i32.rem_s - i32.const 0 - i32.eq - local.set $3 + i32.eqz + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Int16Array#every (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 1 + i32.shl local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + i32.add + i32.load16_s + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 289 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 209 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 85 call $~lib/typedarray/Int16Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 86 call $~lib/typedarray/Int16Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#every (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 1 + i32.shl local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + i32.add + i32.load16_u + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 293 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 211 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 87 call $~lib/typedarray/Uint16Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 88 - call $~lib/typedarray/Uint16Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 398 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 88 + call $~lib/typedarray/Uint16Array#every + if + i32.const 0 + i32.const 24 + i32.const 409 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 i32.rem_s - i32.const 0 - i32.eq - local.set $3 + i32.eqz + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $0 ) - (func $~lib/typedarray/Int32Array#every (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + i32.add + i32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 297 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 214 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 89 call $~lib/typedarray/Int32Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 90 call $~lib/typedarray/Int32Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop + call $~lib/rt/pure/__release local.get $0 - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#every (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 300 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 301 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 215 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 91 - call $~lib/typedarray/Uint32Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne + call $~lib/typedarray/Int32Array#every i32.eqz if i32.const 0 i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 92 - call $~lib/typedarray/Uint32Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 398 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 92 + call $~lib/typedarray/Int32Array#every + if + i32.const 0 + i32.const 24 + i32.const 409 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 302 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 216 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.rem_s i64.const 0 i64.eq - local.set $3 + local.set $1 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $1 ) - (func $~lib/typedarray/Int64Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end - if - br $continue|0 - end + i32.add + i64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$ijii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 304 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 305 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 218 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 93 call $~lib/typedarray/Int64Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 94 - call $~lib/typedarray/Int64Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 398 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 94 + call $~lib/typedarray/Int64Array#every + if + i32.const 0 + i32.const 24 + i32.const 409 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 306 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 219 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.rem_u i64.const 0 i64.eq - local.set $3 + local.set $1 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $1 ) - (func $~lib/typedarray/Uint64Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 308 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 309 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 220 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 95 - call $~lib/typedarray/Uint64Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne + call $~lib/typedarray/Int64Array#every i32.eqz if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 96 - call $~lib/typedarray/Uint64Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz + call $~lib/typedarray/Int64Array#every if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/builtins/isNaN (; 310 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + call $~lib/rt/pure/__release local.get $0 - local.get $0 - f32.ne + call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMathf.mod (; 311 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 221 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - (local $10 i32) local.get $0 i32.reinterpret_f32 - local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $4 - local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $5 - local.get $2 + local.tee $2 i32.const -2147483648 i32.and - local.set $6 - local.get $3 - i32.const 1 - i32.shl - local.set $7 - local.get $7 - i32.const 0 + local.set $4 + local.get $2 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $3 + i32.const 255 i32.eq if (result i32) i32.const 1 else - local.get $4 - i32.const 255 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/builtins/isNaN + i32.const 0 end if local.get $0 - local.get $1 + f32.const 2 f32.mul - local.set $8 - local.get $8 - local.get $8 + local.tee $0 + local.get $0 f32.div return end - local.get $2 - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $7 - i32.le_u - if - local.get $9 - local.get $7 - i32.eq + block $folding-inner0 + local.get $2 + i32.const 1 + i32.shl + local.tee $1 + i32.const -2147483648 + i32.le_u if - f32.const 0 + local.get $1 + i32.const -2147483648 + i32.eq + br_if $folding-inner0 local.get $0 - f32.mul return end - local.get $0 - return - end - local.get $4 - i32.eqz - if - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $4 - local.get $2 - i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $2 - else - local.get $2 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $2 - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $2 - end - local.get $5 - i32.eqz - if - local.get $5 local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $5 - local.get $3 - i32.const 0 - local.get $5 - i32.sub - i32.const 1 - i32.add - i32.shl - local.set $3 - else - local.get $3 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $3 - local.get $3 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $3 - end - block $break|0 + if (result i32) + local.get $2 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $2 + i32.const 1 + local.get $3 + local.get $2 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $3 + i32.sub + i32.shl + end + local.set $1 loop $continue|0 - local.get $4 - local.get $5 + local.get $3 + i32.const 128 i32.gt_s if - local.get $2 - local.get $3 + local.get $1 + i32.const 8388608 i32.ge_u - if - local.get $2 - local.get $3 + if (result i32) + local.get $1 + i32.const 8388608 i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 + br_if $folding-inner0 + local.get $1 + i32.const 8388608 i32.sub - local.set $2 + else + local.get $1 end - local.get $2 i32.const 1 i32.shl - local.set $2 - local.get $4 + local.set $1 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $3 br $continue|0 end end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq + local.get $1 + i32.const 8388608 + i32.ge_u if - f32.const 0 - local.get $0 - f32.mul - return + local.get $1 + i32.const 8388608 + i32.eq + br_if $folding-inner0 + local.get $1 + i32.const 8388608 + i32.sub + local.set $1 end - local.get $2 + local.get $1 + local.get $1 + i32.const 8 + i32.shl + i32.clz + local.tee $1 + i32.shl + local.set $2 local.get $3 + local.get $1 i32.sub - local.set $2 - end - local.get $2 - i32.const 8 - i32.shl - i32.clz - local.set $10 - local.get $4 - local.get $10 - i32.sub - local.set $4 - local.get $2 - local.get $10 - i32.shl - local.set $2 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - local.set $2 - local.get $2 - local.get $4 - i32.const 23 - i32.shl - i32.or - local.set $2 - else - local.get $2 + local.tee $1 i32.const 0 + i32.gt_s + if (result i32) + local.get $2 + i32.const 8388608 + i32.sub + local.get $1 + i32.const 23 + i32.shl + i32.or + else + local.get $2 + i32.const 1 + local.get $1 + i32.sub + i32.shr_u + end local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shr_u - local.set $2 + i32.or + f32.reinterpret_i32 + return end - local.get $2 - local.get $6 - i32.or - local.set $2 - local.get $2 - f32.reinterpret_i32 + f32.const 0 + local.get $0 + f32.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 312 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 222 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 - f32.const 2 call $~lib/math/NativeMathf.mod f32.const 0 f32.eq - local.set $3 + local.set $1 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $1 ) - (func $~lib/typedarray/Float32Array#every (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 2 + i32.shl local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ifii) - end - if - br $continue|0 - end + i32.add + f32.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$ifii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 314 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 315 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 224 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 97 call $~lib/typedarray/Float32Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 98 call $~lib/typedarray/Float32Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - ) - (func $~lib/builtins/isNaN (; 316 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + call $~lib/rt/pure/__release local.get $0 - local.get $0 - f64.ne + call $~lib/rt/pure/__release ) - (func $~lib/math/NativeMath.mod (; 317 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 225 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) + (local $1 i64) (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i64) - (local $10 i64) local.get $0 i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $4 - local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $5 - local.get $2 + local.tee $2 i64.const 63 i64.shr_u - local.set $6 - local.get $3 - i64.const 1 - i64.shl - local.set $7 - local.get $7 - i64.const 0 + local.set $4 + local.get $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $3 + i64.const 2047 i64.eq if (result i32) i32.const 1 else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - call $~lib/builtins/isNaN + i32.const 0 end if local.get $0 - local.get $1 + f64.const 2 f64.mul - local.set $8 - local.get $8 - local.get $8 + local.tee $0 + local.get $0 f64.div return end - local.get $2 - i64.const 1 - i64.shl - local.set $9 - local.get $9 - local.get $7 - i64.le_u - if - local.get $9 - local.get $7 - i64.eq + block $folding-inner0 + local.get $2 + i64.const 1 + i64.shl + local.tee $1 + i64.const -9223372036854775808 + i64.le_u if - f64.const 0 + local.get $1 + i64.const -9223372036854775808 + i64.eq + br_if $folding-inner0 local.get $0 - f64.mul return end - local.get $0 - return - end - local.get $4 - i64.eqz - if - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $4 - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $2 - else - local.get $2 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $2 - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $2 - end - local.get $5 - i64.eqz - if - local.get $5 local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $5 - local.get $3 - i64.const 0 - local.get $5 - i64.sub - i64.const 1 - i64.add - i64.shl - local.set $3 - else - local.get $3 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $3 - local.get $3 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $3 - end - block $break|0 + i64.eqz + if (result i64) + local.get $2 + i64.const 0 + local.get $3 + local.get $2 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $3 + i64.sub + i64.const 1 + i64.add + i64.shl + else + local.get $2 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $1 loop $continue|0 - local.get $4 - local.get $5 + local.get $3 + i64.const 1024 i64.gt_s if - local.get $2 - local.get $3 + local.get $1 + i64.const 4503599627370496 i64.ge_u - if - local.get $2 - local.get $3 + if (result i64) + local.get $1 + i64.const 4503599627370496 i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 + br_if $folding-inner0 + local.get $1 + i64.const 4503599627370496 i64.sub - local.set $2 + else + local.get $1 end - local.get $2 i64.const 1 i64.shl - local.set $2 - local.get $4 + local.set $1 + local.get $3 i64.const 1 i64.sub - local.set $4 + local.set $3 br $continue|0 end end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq + local.get $1 + i64.const 4503599627370496 + i64.ge_u if - f64.const 0 - local.get $0 - f64.mul - return + local.get $1 + i64.const 4503599627370496 + i64.eq + br_if $folding-inner0 + local.get $1 + i64.const 4503599627370496 + i64.sub + local.set $1 end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end - local.get $2 - i64.const 11 - i64.shl - i64.clz - local.set $10 - local.get $4 - local.get $10 - i64.sub - local.set $4 - local.get $2 - local.get $10 - i64.shl - local.set $2 - local.get $4 - i64.const 0 - i64.gt_s - if - local.get $2 - i64.const 1 - i64.const 52 + local.get $1 + local.get $1 + i64.const 11 + i64.shl + i64.clz + local.tee $1 i64.shl - i64.sub local.set $2 - local.get $2 + local.get $3 + local.get $1 + i64.sub + local.tee $1 + i64.const 0 + i64.gt_s + if (result i64) + local.get $2 + i64.const 4503599627370496 + i64.sub + local.get $1 + i64.const 52 + i64.shl + i64.or + else + local.get $2 + i64.const 0 + local.get $1 + i64.sub + i64.const 1 + i64.add + i64.shr_u + end local.get $4 - i64.const 52 + i64.const 63 i64.shl i64.or - local.set $2 - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.set $2 + f64.reinterpret_i64 + return end - local.get $2 - local.get $6 - i64.const 63 - i64.shl - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 + f64.const 0 + local.get $0 + f64.mul ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 318 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 226 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 - f64.const 2 call $~lib/math/NativeMath.mod f64.const 0 f64.eq - local.set $3 + local.set $1 local.get $2 - call $~lib/rt/purerc/__release - local.get $3 + call $~lib/rt/pure/__release + local.get $1 ) - (func $~lib/typedarray/Float64Array#every (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.const 3 + i32.shl local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 - block $continue|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$idii) - end - if - br $continue|0 - end + i32.add + f64.load + local.get $0 + local.get $2 + local.get $1 + call_indirect (type $FUNCSIG$idii) + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + else + local.get $2 + call $~lib/rt/pure/__release i32.const 0 br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 unreachable end - unreachable end + local.get $2 + call $~lib/rt/pure/__release i32.const 1 - local.set $6 - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 320 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 321 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 228 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 99 call $~lib/typedarray/Float64Array#every - local.set $2 - local.get $2 - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 100 - call $~lib/typedarray/Float64Array#every - local.set $3 - local.get $3 - i32.const 0 - i32.ne - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 398 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + i32.const 100 + call $~lib/typedarray/Float64Array#every + if + i32.const 0 + i32.const 24 + i32.const 409 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 322 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 229 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $0 + i32.const 255 + i32.and global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz + i32.const 255 + i32.and + i32.ne if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz + i32.ne if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf local.get $2 - i32.eq - i32.eqz + global.get $std/typedarray/forEachSelf + i32.ne if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -14895,74 +10646,58 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 230 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $1 i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $2 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + local.set $3 + loop $repeat|0 + local.get $0 + local.get $3 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl + local.get $0 + local.get $2 i32.add i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$viii) - local.get $5 + local.get $0 + local.get $1 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 324 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 231 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -14972,7 +10707,7 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -14982,7 +10717,7 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -14992,148 +10727,75 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 101 + local.get $0 call $~lib/typedarray/Int8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 325 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 255 - i32.and - local.get $3 - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 1240 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $~lib/typedarray/Uint8Array#forEach (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 232 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl + local.get $0 + local.get $3 i32.add i32.load8_u - local.get $5 - local.get $3 + local.get $0 local.get $2 + local.get $1 call_indirect (type $FUNCSIG$viii) - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 327 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 233 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -15141,7 +10803,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -15149,7 +10811,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -15157,148 +10819,37 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 102 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 328 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 255 - i32.and - local.get $3 - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 1240 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$viii) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 330 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 234 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -15306,7 +10857,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -15314,7 +10865,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -15322,75 +10873,64 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 103 - call $~lib/typedarray/Uint8ClampedArray#forEach + call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 331 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 235 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $0 + i32.const 65535 + i32.and global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - i32.eqz + i32.const 65535 + i32.and + i32.ne if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz + i32.ne if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf local.get $2 - i32.eq - i32.eqz + global.get $std/typedarray/forEachSelf + i32.ne if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15400,74 +10940,62 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 332 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 236 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $1 i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $2 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + loop $repeat|0 + local.get $0 + local.get $3 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 + local.get $0 i32.const 1 i32.shl + local.get $2 i32.add i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$viii) - local.get $5 + local.get $0 + local.get $1 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 333 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 237 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -15477,7 +11005,7 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -15487,7 +11015,7 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -15497,148 +11025,78 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 104 + local.get $0 call $~lib/typedarray/Int16Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 334 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 65535 - i32.and - local.get $3 - i32.const 65535 - i32.and - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 1240 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $~lib/typedarray/Uint16Array#forEach (; 335 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 238 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $1 i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $2 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + loop $repeat|0 + local.get $0 + local.get $3 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 + local.get $0 i32.const 1 i32.shl + local.get $2 i32.add i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$viii) - local.get $5 + local.get $0 + local.get $1 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 336 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 239 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -15646,7 +11104,7 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -15654,7 +11112,7 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -15662,67 +11120,59 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 105 + local.get $0 call $~lib/typedarray/Uint16Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 337 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 240 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get - local.set $3 local.get $0 - local.get $3 - i32.eq - i32.eqz + i32.ne if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz + i32.ne if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf local.get $2 - i32.eq - i32.eqz + global.get $std/typedarray/forEachSelf + i32.ne if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15732,308 +11182,183 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 338 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 241 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 + local.get $0 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $5 - local.get $3 + local.get $0 local.get $2 + local.get $1 call_indirect (type $FUNCSIG$viii) - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 339 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 242 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 106 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 340 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i32.eq - i32.eqz - if - i32.const 1112 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 1240 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $~lib/typedarray/Uint32Array#forEach (; 341 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$viii) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 342 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 243 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 107 - call $~lib/typedarray/Uint32Array#forEach + call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 343 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 244 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $0 global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 i64.extend_i32_s - i64.eq - i32.eqz + i64.ne if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz + i32.ne if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf local.get $2 - i32.eq - i32.eqz + global.get $std/typedarray/forEachSelf + i32.ne if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -16043,315 +11368,189 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 245 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 + local.set $3 + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + loop $repeat|0 + local.get $0 + local.get $4 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 + local.get $0 i32.const 3 i32.shl + local.get $3 i32.add i64.load - local.get $5 - local.get $3 + local.get $0 local.get $2 + local.get $1 call_indirect (type $FUNCSIG$vjii) - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 345 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 246 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 108 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 346 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i64.extend_i32_s - i64.eq - i32.eqz - if - i32.const 1112 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 1176 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf - local.get $2 - i32.eq - i32.eqz - if - i32.const 1240 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $~lib/typedarray/Uint64Array#forEach (; 347 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$vjii) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - call $~lib/rt/purerc/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 348 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 247 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 109 - call $~lib/typedarray/Uint64Array#forEach + call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 349 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 248 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $0 global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 f32.convert_i32_s - f32.eq - i32.eqz + f32.ne if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz + i32.ne if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf local.get $2 - i32.eq - i32.eqz + global.get $std/typedarray/forEachSelf + i32.ne if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -16361,156 +11560,136 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 350 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 249 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $1 i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $2 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + loop $repeat|0 + local.get $0 + local.get $3 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 + local.get $0 i32.const 2 i32.shl + local.get $2 i32.add f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$vfii) - local.get $5 + local.get $0 + local.get $1 + call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 351 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 250 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 110 + local.get $0 call $~lib/typedarray/Float32Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 352 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 251 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop + local.get $0 global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 f64.convert_i32_s - f64.eq - i32.eqz + f64.ne if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz + i32.ne if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf local.get $2 - i32.eq - i32.eqz + global.get $std/typedarray/forEachSelf + i32.ne if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -16520,192 +11699,158 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 353 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 252 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - local.set $2 - local.get $3 + call $~lib/rt/pure/__retain + local.tee $1 i32.load offset=4 - local.set $4 - block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $2 + i32.const 0 + local.set $0 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + loop $repeat|0 + local.get $0 + local.get $3 + i32.lt_s + if i32.const 3 global.set $~lib/argc - local.get $4 - local.get $5 + local.get $0 i32.const 3 i32.shl + local.get $2 i32.add f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$vdii) - local.get $5 + local.get $0 + local.get $1 + call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 354 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 253 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount - i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/pure/__retain local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 global.set $std/typedarray/forEachSelf - local.get $1 + local.get $0 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 111 + local.get $0 call $~lib/typedarray/Float64Array#forEach global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz + i32.ne if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $5 - i32.load8_s - local.set $7 - local.get $5 - local.get $6 - i32.load8_s - i32.store8 - local.get $6 - local.get $7 - i32.store8 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + local.get $4 + i32.add + local.tee $3 + i32.load8_s + local.set $5 + local.get $3 + local.get $1 + local.get $4 + i32.add + local.tee $3 + i32.load8_s + i32.store8 + local.get $3 + local.get $5 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 + end + end + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 356 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 255 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16713,379 +11858,281 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Int8Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 24 i32.shl i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get i32.const 24 i32.shl i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Int8Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Int8Array#__get local.get $0 + call $~lib/typedarray/Int8Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get i32.const 24 i32.shl i32.const 24 i32.shr_s - i32.eq - i32.eqz + i32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 + local.get $3 i32.const 4 i32.const 8 call $~lib/typedarray/Int8Array#subarray local.tee $6 call $~lib/typedarray/Int8Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 8 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 7 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 6 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#__get i32.const 5 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 357 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $5 - i32.load8_u - local.set $7 - local.get $5 - local.get $6 - i32.load8_u - i32.store8 - local.get $6 - local.get $7 - i32.store8 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 - ) - (func $~lib/typedarray/Uint8Array#subarray (; 358 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + i32.load offset=8 + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - local.get $4 - i32.const 0 i32.lt_s if - local.get $6 + local.get $0 local.get $4 i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 + local.tee $3 + i32.load8_u + local.set $5 local.get $3 + local.get $1 + local.get $4 i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else + local.tee $3 + i32.load8_u + i32.store8 local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 + local.get $5 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 end - i32.const 12 - i32.const 18 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 359 ;) (type $FUNCSIG$v) + (func $~lib/typedarray/Uint8Array#subarray (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=8 + local.tee $1 + i32.const 8 + local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + local.get $2 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 258 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17093,373 +12140,216 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Uint8Array#__get local.get $0 + call $~lib/typedarray/Uint8Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get i32.const 255 i32.and - i32.eq - i32.eqz + i32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Uint8Array#subarray local.tee $6 call $~lib/typedarray/Uint8Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 8 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 7 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 6 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#__get i32.const 5 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $5 - i32.load8_u - local.set $7 - local.get $5 - local.get $6 - i32.load8_u - i32.store8 - local.get $6 - local.get $7 - i32.store8 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $2 - call $~lib/rt/purerc/__release + i32.load offset=8 + local.tee $1 + i32.const 8 local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + local.get $2 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 361 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - i32.const 19 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 362 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 260 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17467,373 +12357,285 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 - call $~lib/typedarray/Uint8ClampedArray#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/typedarray/Uint8Array#reverse + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#__get local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get i32.const 255 i32.and - i32.eq - i32.eqz + i32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Uint8ClampedArray#subarray local.tee $6 - call $~lib/typedarray/Uint8ClampedArray#reverse - local.set $7 - local.get $7 + call $~lib/typedarray/Uint8Array#reverse + local.tee $0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 8 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 7 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 6 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $5 - i32.load16_s - local.set $7 - local.get $5 - local.get $6 - i32.load16_s - i32.store16 - local.get $6 - local.get $7 - i32.store16 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 - ) - (func $~lib/typedarray/Int16Array#subarray (; 364 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - local.get $4 - i32.const 0 i32.lt_s if - local.get $6 + local.get $0 + i32.const 1 + i32.shl local.get $4 i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 + local.tee $3 + i32.load16_s + local.set $5 local.get $3 + local.get $1 + i32.const 1 + i32.shl + local.get $4 i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else + local.tee $3 + i32.load16_s + i32.store16 local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 + local.get $5 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 end - i32.const 12 - i32.const 20 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 365 ;) (type $FUNCSIG$v) + (func $~lib/typedarray/Int16Array#subarray (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 8 + local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 263 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17841,379 +12643,291 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Int16Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 16 i32.shl i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get i32.const 16 i32.shl i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Int16Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Int16Array#__get local.get $0 + call $~lib/typedarray/Int16Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get i32.const 16 i32.shl i32.const 16 i32.shr_s - i32.eq - i32.eqz + i32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Int16Array#subarray local.tee $6 call $~lib/typedarray/Int16Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 8 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 7 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 6 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#__get i32.const 5 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 366 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $5 - i32.load16_u - local.set $7 - local.get $5 - local.get $6 - i32.load16_u - i32.store16 - local.get $6 - local.get $7 - i32.store16 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 - ) - (func $~lib/typedarray/Uint16Array#subarray (; 367 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - local.get $4 - i32.const 0 i32.lt_s if - local.get $6 + local.get $0 + i32.const 1 + i32.shl local.get $4 i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 + local.tee $3 + i32.load16_u + local.set $5 local.get $3 + local.get $1 + i32.const 1 + i32.shl + local.get $4 i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else + local.tee $3 + i32.load16_u + i32.store16 local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 + local.get $5 + i32.store16 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 end - i32.const 12 - i32.const 21 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 368 ;) (type $FUNCSIG$v) + (func $~lib/typedarray/Uint16Array#subarray (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $1 + i32.const 8 + local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 266 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18221,255 +12935,222 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Uint16Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Uint16Array#__get local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get i32.const 65535 i32.and - i32.eq - i32.eqz + i32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Uint16Array#subarray local.tee $6 call $~lib/typedarray/Uint16Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 8 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 7 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 6 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#__get i32.const 5 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $5 - i32.load - local.set $7 - local.get $5 - local.get $6 - i32.load - i32.store - local.get $6 - local.get $7 - i32.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $1 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $3 + i32.load + i32.store + local.get $3 + local.get $5 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 + end + end + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 370 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 268 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18477,367 +13158,218 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Int32Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Int32Array#__get local.get $0 + call $~lib/typedarray/Int32Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get - i32.eq - i32.eqz + i32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 + local.get $3 i32.const 4 i32.const 8 call $~lib/typedarray/Int32Array#subarray local.tee $6 call $~lib/typedarray/Int32Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 8 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 7 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 6 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#__get i32.const 5 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 269 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $5 - i32.load - local.set $7 - local.get $5 - local.get $6 - i32.load - i32.store - local.get $6 - local.get $7 - i32.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $2 - call $~lib/rt/purerc/__release + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 8 local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 ) - (func $~lib/typedarray/Uint32Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - i32.const 23 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 373 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 270 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18845,367 +13377,279 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 - call $~lib/typedarray/Uint32Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/typedarray/Int32Array#reverse + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Uint32Array#__get local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get - i32.eq - i32.eqz + i32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Uint32Array#subarray local.tee $6 - call $~lib/typedarray/Uint32Array#reverse - local.set $7 - local.get $7 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 8 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 7 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 6 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#__get i32.const 5 - i32.eq - i32.eqz + i32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - block $~lib/typedarray/REVERSE<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $5 - i64.load - local.set $7 - local.get $5 - local.get $6 - i64.load - i64.store - local.get $6 - local.get $7 - i64.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + (local $5 i64) + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 - ) - (func $~lib/typedarray/Int64Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - local.get $4 - i32.const 0 i32.lt_s if - local.get $6 + local.get $0 + i32.const 3 + i32.shl local.get $4 i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 + local.tee $3 + i64.load + local.set $5 local.get $3 + local.get $1 + i32.const 3 + i32.shl + local.get $4 i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else + local.tee $3 + i64.load + i64.store local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 + local.get $5 + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 end - i32.const 12 - i32.const 24 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 376 ;) (type $FUNCSIG$v) + (func $~lib/typedarray/Int64Array#subarray (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $1 + i32.const 8 + local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 273 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19213,370 +13657,219 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Int64Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Int64Array#__get local.get $0 + call $~lib/typedarray/Int64Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get i64.extend_i32_s - i64.eq - i32.eqz + i64.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Int64Array#subarray local.tee $6 call $~lib/typedarray/Int64Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 8 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 7 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 6 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#__get i64.const 5 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#reverse (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - block $~lib/typedarray/REVERSE<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $5 - i64.load - local.set $7 - local.get $5 - local.get $6 - i64.load - i64.store - local.get $6 - local.get $7 - i64.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $2 - call $~lib/rt/purerc/__release + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $1 + i32.const 8 local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 ) - (func $~lib/typedarray/Uint64Array#subarray (; 378 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - i32.const 25 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 379 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 275 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19584,370 +13877,282 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 - call $~lib/typedarray/Uint64Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/typedarray/Int64Array#reverse + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Uint64Array#__get local.get $0 + call $~lib/typedarray/Uint64Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get i64.extend_i32_s - i64.eq - i32.eqz + i64.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Uint64Array#subarray local.tee $6 - call $~lib/typedarray/Uint64Array#reverse - local.set $7 - local.get $7 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 8 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 7 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 6 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#__get i64.const 5 - i64.eq - i32.eqz + i64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 380 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f32) - block $~lib/typedarray/REVERSE<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $5 - f32.load - local.set $7 - local.get $5 - local.get $6 - f32.load - f32.store - local.get $6 - local.get $7 - f32.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + (local $5 f32) + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 - ) - (func $~lib/typedarray/Float32Array#subarray (; 381 ;) (type $FUNCSIG$iiii) (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) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 local.get $0 - call $~lib/rt/purerc/__retain - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - local.get $4 - i32.const 0 i32.lt_s if - local.get $6 + local.get $0 + i32.const 2 + i32.shl local.get $4 i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 + local.tee $3 + f32.load + local.set $5 local.get $3 + local.get $1 + i32.const 2 + i32.shl + local.get $4 i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else + local.tee $3 + f32.load + f32.store local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 + local.get $5 + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 end - i32.const 12 - i32.const 26 - call $~lib/rt/tlsf/__alloc - local.set $7 - local.get $7 - local.tee $8 - local.get $5 - i32.load - local.get $8 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 end - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $6 + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 382 ;) (type $FUNCSIG$v) + (func $~lib/typedarray/Float32Array#subarray (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 8 + local.get $0 + call $~lib/rt/pure/__retain + local.tee $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 8 + local.get $1 + i32.lt_s + select + local.set $3 + i32.const 12 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + local.get $0 + i32.load + local.get $2 + i32.load + call $~lib/rt/pure/__retainRelease + i32.store + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 4 + local.get $1 + i32.const 4 + local.get $1 + i32.lt_s + select + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + local.get $3 + local.get $1 + i32.gt_s + select + local.get $1 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__retain + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 278 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19955,252 +14160,219 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Float32Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Float32Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Float32Array#__get local.get $0 + call $~lib/typedarray/Float32Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get f32.convert_i32_s - f32.eq - i32.eqz + f32.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 - i32.const 4 - i32.const 8 + local.get $3 call $~lib/typedarray/Float32Array#subarray local.tee $6 call $~lib/typedarray/Float32Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 8 - f32.eq - i32.eqz + f32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 7 - f32.eq - i32.eqz + f32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 6 - f32.eq - i32.eqz + f32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#__get f32.const 5 - f32.eq - i32.eqz + f32.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 383 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - block $~lib/typedarray/REVERSE<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $5 - f64.load - local.set $7 - local.get $5 - local.get $6 - f64.load - f64.store - local.get $6 - local.get $7 - f64.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - end + (local $5 f64) + local.get $0 + call $~lib/rt/pure/__retain local.tee $2 - call $~lib/rt/purerc/__retain - local.set $1 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $0 local.get $2 - call $~lib/rt/purerc/__release - local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $repeat|0 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $3 + f64.load + f64.store + local.get $3 + local.get $5 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $repeat|0 + end + end + local.get $2 + call $~lib/rt/pure/__retain + local.set $0 + local.get $2 + call $~lib/rt/pure/__release + local.get $0 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 384 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 280 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20208,175 +14380,158 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 0 + call $~lib/rt/pure/__retain + local.set $1 i32.const 9 call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/pure/__retain local.set $2 - i32.const 0 i32.const 9 call $~lib/typedarray/Float64Array#constructor - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 0 - local.set $5 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.tee $5 + call $~lib/rt/pure/__retain + local.set $3 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 - local.get $5 local.get $0 - local.get $5 + local.get $1 + local.get $0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $4 - local.get $5 + local.get $3 + local.get $0 + local.get $1 local.get $0 - local.get $5 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $2 call $~lib/typedarray/Float64Array#reverse - call $~lib/rt/purerc/__release - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 i32.const 9 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - local.get $5 - call $~lib/typedarray/Float64Array#__get local.get $0 + call $~lib/typedarray/Float64Array#__get + local.get $1 i32.const 8 - local.get $5 + local.get $0 i32.sub call $~lib/array/Array#__get f64.convert_i32_s - f64.eq - i32.eqz + f64.ne if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 unreachable end - unreachable end - local.get $4 + local.get $3 i32.const 4 i32.const 8 call $~lib/typedarray/Float64Array#subarray local.tee $6 call $~lib/typedarray/Float64Array#reverse - local.set $7 - local.get $7 + local.tee $0 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 8 - f64.eq - i32.eqz + f64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 7 - f64.eq - i32.eqz + f64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 6 - f64.eq - i32.eqz + f64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#__get f64.const 5 - f64.eq - i32.eqz + f64.ne if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release local.get $4 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 385 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 281 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20386,417 +14541,269 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 3 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 4 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 5 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 6 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 7 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 8 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 9 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 10 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 11 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 12 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 13 - i32.const 0 - call $~lib/builtins/abort - unreachable - end i32.const 0 call $std/typedarray/testInstantiate i32.const 5 call $std/typedarray/testInstantiate - i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - global.set $std/typedarray/arr - global.get $std/typedarray/arr + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr - call $~lib/typedarray/Int32Array#get:length + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.const 3 - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 95 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub if i32.const 0 i32.const 24 i32.const 96 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne if i32.const 0 i32.const 24 i32.const 97 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne if i32.const 0 i32.const 24 i32.const 98 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - i32.const 0 - call $~lib/typedarray/Int32Array#__get + local.get $0 i32.const 1 - i32.eq - i32.eqz + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne if i32.const 0 i32.const 24 i32.const 99 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - i32.const 1 - call $~lib/typedarray/Int32Array#__get + local.get $0 i32.const 2 - i32.eq - i32.eqz + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne if i32.const 0 i32.const 24 i32.const 100 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr + local.get $0 + local.get $0 + i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz + call $~lib/typedarray/Int32Array#subarray + call $~lib/rt/pure/__skippedRelease + local.tee $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne if i32.const 0 i32.const 24 - i32.const 101 - i32.const 0 + i32.const 103 + i32.const 2 call $~lib/builtins/abort unreachable end - block (result i32) - global.get $std/typedarray/arr - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - end - global.set $std/typedarray/arr - global.get $std/typedarray/arr - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.eq - i32.eqz + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 4 + i32.ne if i32.const 0 i32.const 24 i32.const 104 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 + local.get $0 + i32.load offset=8 i32.const 4 - i32.mul - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 i32.const 105 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne if i32.const 0 i32.const 24 i32.const 106 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 107 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 0 + local.get $0 + call $~lib/rt/pure/__release i32.const 8 call $~lib/typedarray/Float64Array#constructor - global.set $std/typedarray/af64 - global.get $std/typedarray/af64 + local.tee $0 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 + local.get $0 i32.const 2 f64.const 7 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 + local.get $0 i32.const 3 f64.const 6 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 + local.get $0 i32.const 4 f64.const 5 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 + local.get $0 i32.const 5 f64.const 4 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 + local.get $0 i32.const 6 f64.const 3 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 + local.get $0 i32.const 7 f64.const 8 call $~lib/typedarray/Float64Array#__set - block (result i32) - global.get $std/typedarray/af64 - call $~lib/rt/purerc/__release - global.get $std/typedarray/af64 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - end - global.set $std/typedarray/af64 - global.get $std/typedarray/af64 - call $~lib/typedarray/Float64Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 121 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/af64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + local.get $0 i32.const 2 - i32.const 8 - i32.mul - i32.eq - i32.eqz + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + call $~lib/rt/pure/__skippedRelease + local.tee $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 4 + i32.ne if i32.const 0 i32.const 24 i32.const 122 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/af64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 - i32.const 8 - i32.mul - i32.eq - i32.eqz + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 16 + i32.ne if i32.const 0 i32.const 24 i32.const 123 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - block + local.get $0 + i32.load offset=8 + i32.const 32 + i32.ne + if i32.const 0 - global.set $~lib/argc - global.get $std/typedarray/af64 - i32.const 0 - call $~lib/typedarray/Float64Array#sort|trampoline - call $~lib/rt/purerc/__release + i32.const 24 + i32.const 124 + i32.const 2 + call $~lib/builtins/abort + unreachable end - global.get $std/typedarray/af64 + i32.const 0 + global.set $~lib/argc + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1 + local.set $1 + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array#sort + call $~lib/rt/pure/__release + local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.eq if (result i32) - global.get $std/typedarray/af64 + local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -20805,7 +14812,7 @@ i32.const 0 end if (result i32) - global.get $std/typedarray/af64 + local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 6 @@ -20814,7 +14821,7 @@ i32.const 0 end if (result i32) - global.get $std/typedarray/af64 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#__get f64.const 7 @@ -20826,739 +14833,760 @@ if i32.const 0 i32.const 24 - i32.const 125 - i32.const 0 + i32.const 126 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 0 + local.get $0 + call $~lib/rt/pure/__release i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - global.set $std/typedarray/clampedArr - global.get $std/typedarray/clampedArr + local.tee $0 i32.const 0 i32.const -32 call $~lib/typedarray/Uint8ClampedArray#__set - global.get $std/typedarray/clampedArr + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - global.get $std/typedarray/clampedArr + local.get $0 i32.const 2 i32.const 256 call $~lib/typedarray/Uint8ClampedArray#__set - global.get $std/typedarray/clampedArr + local.get $0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 24 - i32.const 132 - i32.const 0 + i32.const 135 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/clampedArr + local.get $0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 133 - i32.const 0 + i32.const 136 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/clampedArr + local.get $0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 255 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 134 - i32.const 0 + i32.const 137 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 0 + local.get $0 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int8Array#constructor - global.set $std/typedarray/arr8 - global.get $std/typedarray/arr8 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 + local.get $0 i32.const 1 i32.const 1 i32.const 3 call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 0 - i32.const 28 - i32.const 400 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 144 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr8 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 - i32.const 5 - i32.const 0 - i32.const 28 - i32.const 528 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain + i32.const 14 + i32.const 488 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $2 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 147 - i32.const 0 + i32.const 149 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr8 - i32.const 1 + local.get $0 i32.const 0 - i32.const -3 + i32.const 0 + i32.const 2147483647 call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 0 - i32.const 28 - i32.const 552 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain + i32.const 14 + i32.const 560 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $3 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 150 - i32.const 0 + i32.const 152 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr8 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE + local.get $0 + i32.const 1 + i32.const 0 + i32.const -3 call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 0 - i32.const 28 - i32.const 576 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain + i32.const 14 + i32.const 584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $4 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 153 - i32.const 0 + i32.const 155 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr8 - i32.const 0 - i32.const 1 - i32.const 0 + local.get $0 + i32.const 2 + i32.const -2 + i32.const 2147483647 call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 0 - i32.const 28 - i32.const 600 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain + i32.const 14 + i32.const 608 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $5 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 156 - i32.const 0 + i32.const 158 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr8 + local.get $0 + i32.const 0 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/sub8 - global.get $std/typedarray/sub8 i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/sub8 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 160 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 161 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub8 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 162 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub8 - i32.const 3 + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 i32.const 0 - i32.const 28 - i32.const 624 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain + i32.const 14 + i32.const 632 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $6 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 163 - i32.const 0 + i32.const 161 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr8 - i32.const 5 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $1 i32.const 0 - i32.const 28 - i32.const 648 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 165 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 166 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 167 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.const 0 + i32.const 14 + i32.const 656 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $7 call $std/typedarray/isInt8ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 164 - i32.const 0 + i32.const 168 + i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + i32.const 5 i32.const 0 + i32.const 14 + i32.const 680 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 169 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release i32.const 5 call $~lib/typedarray/Int32Array#constructor - global.set $std/typedarray/arr32 - global.get $std/typedarray/arr32 + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 + local.get $0 i32.const 1 i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 2 - i32.const 29 - i32.const 672 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $8 + i32.const 15 + i32.const 704 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $2 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 174 - i32.const 0 + i32.const 181 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr32 + local.get $0 i32.const 0 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 2 - i32.const 29 - i32.const 712 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $9 + i32.const 15 + i32.const 744 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 177 - i32.const 0 + i32.const 184 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr32 + local.get $0 i32.const 1 i32.const 0 i32.const -3 call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 2 - i32.const 29 - i32.const 752 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $10 + i32.const 15 + i32.const 784 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 180 - i32.const 0 + i32.const 187 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr32 + local.get $0 i32.const 2 i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 + call $~lib/rt/pure/__release + local.get $0 i32.const 5 i32.const 2 - i32.const 29 - i32.const 792 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $11 + i32.const 15 + i32.const 824 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 call $std/typedarray/isInt32ArrayEqual i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 183 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 - i32.const 5 - i32.const 2 - i32.const 29 - i32.const 832 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $12 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 186 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - global.set $std/typedarray/sub32 - global.get $std/typedarray/sub32 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/sub32 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz if i32.const 0 i32.const 24 i32.const 190 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/sub32 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + i32.const 0 i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 191 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub32 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 192 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub32 - i32.const 3 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 i32.const 2 - i32.const 29 - i32.const 872 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $13 + i32.const 15 + i32.const 864 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 i32.const 24 i32.const 193 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr32 - i32.const 5 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $1 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $1 + i32.load offset=8 i32.const 2 - i32.const 29 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 197 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 198 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 199 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.const 2 + i32.const 15 i32.const 904 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $14 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 call $std/typedarray/isInt32ArrayEqual i32.eqz if i32.const 0 i32.const 24 - i32.const 194 - i32.const 0 + i32.const 200 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 0 - global.get $std/typedarray/MAX_F64LENGTH - call $~lib/typedarray/Float64Array#constructor - call $~lib/rt/purerc/__release - i32.const 0 + local.get $0 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 936 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 201 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release i32.const 6 call $~lib/typedarray/Int8Array#constructor - global.set $std/typedarray/multisubarr - global.get $std/typedarray/multisubarr + local.tee $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr + local.get $0 i32.const 5 i32.const 6 call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr + local.get $0 i32.const 1 i32.const 6 call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/multisubarr1 - global.get $std/typedarray/multisubarr1 + local.tee $1 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 211 - i32.const 0 + i32.const 222 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/multisubarr1 - call $~lib/typedarray/Int8Array#get:length + local.get $1 + i32.load offset=8 i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 212 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 213 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 214 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr1 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/multisubarr2 - global.get $std/typedarray/multisubarr2 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 217 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - call $~lib/typedarray/Int8Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 218 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 219 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 220 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/multisubarr3 - global.get $std/typedarray/multisubarr3 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 i32.const 223 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/multisubarr3 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 1 + i32.ne if i32.const 0 i32.const 24 i32.const 224 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/multisubarr3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 3 - i32.eq - i32.eqz + local.get $1 + i32.load offset=8 + i32.const 5 + i32.ne if i32.const 0 i32.const 24 i32.const 225 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/multisubarr3 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.get $1 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $2 + i32.const 0 + call $~lib/typedarray/Int8Array#__get i32.const 3 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 - i32.const 226 - i32.const 0 + i32.const 228 + i32.const 2 call $~lib/builtins/abort unreachable end + local.get $2 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 229 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=4 + local.get $2 + i32.load + i32.sub + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 231 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $3 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 234 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 235 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + local.get $3 + i32.load + i32.sub + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 236 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 237 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> @@ -21647,297 +15675,25 @@ call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $11 - call $~lib/rt/purerc/__release - local.get $12 - call $~lib/rt/purerc/__release - local.get $13 - call $~lib/rt/purerc/__release - local.get $14 - call $~lib/rt/purerc/__release + global.get $std/typedarray/forEachValues + call $~lib/rt/pure/__release + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/pure/__release ) - (func $std/typedarray/main (; 386 ;) (type $FUNCSIG$v) + (func $std/typedarray/main (; 282 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if - call $start + call $start:std/typedarray i32.const 1 global.set $~lib/started end ) - (func $start (; 387 ;) (type $FUNCSIG$v) - call $start:std/typedarray - ) - (func $~lib/rt/common/__typeinfo (; 388 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if - i32.const 288 - i32.const 1672 - i32.const 55 - i32.const 34 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/purerc/growRoots (; 389 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 - global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - global.set $~lib/rt/purerc/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/purerc/END - ) - (func $~lib/rt/purerc/appendRoot (; 390 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/purerc/END - i32.ge_u - if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/purerc/CUR - ) - (func $~lib/rt/purerc/decrement (; 391 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - call $~lib/rt/purerc/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/builtins/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/common/__typeinfo - i32.const 8 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/purerc/__retainRelease (; 392 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.ne - if - global.get $~lib/builtins/HEAP_BASE - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - end - local.get $0 - ) - (func $~lib/rt/purerc/__release (; 393 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) - (func $~lib/array/Array#__visit_impl (; 394 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 395 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/rt/purerc/markGray (; 396 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 283 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -21945,9 +15701,7 @@ if local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 268435456 i32.or @@ -21956,32 +15710,27 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 397 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 284 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and - i32.const 0 - i32.or i32.store offset=4 local.get $0 i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 398 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 285 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -21994,13 +15743,11 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 536870912 i32.or @@ -22009,16 +15756,15 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 399 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 286 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 536870912 @@ -22036,17 +15782,15 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 400 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/pure/__visit (; 287 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 1820 i32.lt_u if return @@ -22054,244 +15798,130 @@ local.get $0 i32.const 16 i32.sub - local.set $2 + local.set $0 block $break|0 block $case5|0 block $case4|0 block $case3|0 block $case2|0 block $case1|0 - block $case0|0 + local.get $1 + i32.const 1 + i32.ne + if local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end br $case5|0 end - block - local.get $2 - call $~lib/rt/purerc/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/purerc/markGray + local.get $0 + call $~lib/rt/pure/decrement br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 288 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/scan + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/purerc/scanBlack end + local.get $0 + call $~lib/rt/pure/scan br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 288 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/collectWhite + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $0 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end + i32.const 288 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort + unreachable end ) - (func $~lib/builtins/__visit_members (; 401 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $block$16$break - block - end - block $switch$1$leave - block $switch$1$case$31 - block $switch$1$case$30 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$30 $switch$1$case$31 $switch$1$default - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$16$break - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit + (func $~lib/rt/__visit_members (; 288 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$4$break + block $switch$1$default + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default end return - unreachable end unreachable - unreachable end - unreachable + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end ) - (func $null (; 402 ;) (type $FUNCSIG$v) + (func $null (; 289 ;) (type $FUNCSIG$v) + nop ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index 77027d89..e50dcafa 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -1,5 +1,3 @@ -import "collector/dummy"; - assert(Int8Array.BYTES_PER_ELEMENT == 1); assert(Uint8Array.BYTES_PER_ELEMENT == 1); assert(Uint8ClampedArray.BYTES_PER_ELEMENT == 1); @@ -89,153 +87,166 @@ function testInstantiate(len: i32): void { testInstantiate(0); testInstantiate(5); -var arr = new Int32Array(3); -arr[0] = 1; -arr[1] = 2; -arr[2] = 3; -assert(arr.length == 3); -assert(arr.byteOffset == 0); -assert(arr.byteLength == 3 * sizeof()); -assert(arr[0] == 1); -assert(arr[1] == 2); -assert(arr[2] == 3); +{ + let arr = new Int32Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + assert(arr.length == 3); + assert(arr.byteOffset == 0); + assert(arr.byteLength == 3 * sizeof()); + assert(arr[0] == 1); + assert(arr[1] == 2); + assert(arr[2] == 3); -arr = arr.subarray(1, 2); -assert(arr.length == 1); -assert(arr.byteOffset == 1 * sizeof()); -assert(arr.byteLength == 1 * sizeof()); -assert(arr[0] == 2); + arr = arr.subarray(1, 2); + assert(arr.length == 1); + assert(arr.byteOffset == 1 * sizeof()); + assert(arr.byteLength == 1 * sizeof()); + assert(arr[0] == 2); +} -var af64 = new Float64Array(8); -af64[0] = 1; -af64[1] = 2; +{ + let af64 = new Float64Array(8); + af64[0] = 1; + af64[1] = 2; -af64[2] = 7; -af64[3] = 6; -af64[4] = 5; -af64[5] = 4; + af64[2] = 7; + af64[3] = 6; + af64[4] = 5; + af64[5] = 4; -af64[6] = 3; -af64[7] = 8; -af64 = af64.subarray(2, 6); -assert(af64.length == 4); -assert(af64.byteOffset == 2 * sizeof()); -assert(af64.byteLength == 4 * sizeof()); -af64.sort(); -assert(af64[0] == 4 && af64[1] == 5 && af64[2] == 6 && af64[3] == 7); + af64[6] = 3; + af64[7] = 8; + af64 = af64.subarray(2, 6); + assert(af64.length == 4); + assert(af64.byteOffset == 2 * sizeof()); + assert(af64.byteLength == 4 * sizeof()); + af64.sort(); + assert(af64[0] == 4 && af64[1] == 5 && af64[2] == 6 && af64[3] == 7); +} -var clampedArr = new Uint8ClampedArray(3); -clampedArr[0] = -32; -clampedArr[1] = 2; -clampedArr[2] = 256; +{ + let clampedArr = new Uint8ClampedArray(3); + clampedArr[0] = -32; + clampedArr[1] = 2; + clampedArr[2] = 256; -assert(clampedArr[0] == 0); -assert(clampedArr[1] == 2); -assert(clampedArr[2] == 255); + assert(clampedArr[0] == 0); + assert(clampedArr[1] == 2); + assert(clampedArr[2] == 255); +} -var arr8 = new Int8Array(5); -arr8[0] = 1; -arr8[1] = 2; -arr8[2] = 3; -arr8[3] = 4; -arr8[4] = 5; +{ + let arr8 = new Int8Array(5); + arr8[0] = 1; + arr8[1] = 2; + arr8[2] = 3; + arr8[3] = 4; + arr8[4] = 5; -arr8.fill(1, 1, 3); -assert(isInt8ArrayEqual(arr8, [1, 1, 1, 4, 5])); + arr8.fill(1, 1, 3); + assert(isInt8ArrayEqual(arr8, [1, 1, 1, 4, 5])); -arr8.fill(0); -assert(isInt8ArrayEqual(arr8, [0, 0, 0, 0, 0])); + arr8.fill(0); + assert(isInt8ArrayEqual(arr8, [0, 0, 0, 0, 0])); -arr8.fill(1, 0, -3); -assert(isInt8ArrayEqual(arr8, [1, 1, 0, 0, 0])); + arr8.fill(1, 0, -3); + assert(isInt8ArrayEqual(arr8, [1, 1, 0, 0, 0])); -arr8.fill(2, -2); -assert(isInt8ArrayEqual(arr8, [1, 1, 0, 2, 2])); + arr8.fill(2, -2); + assert(isInt8ArrayEqual(arr8, [1, 1, 0, 2, 2])); -arr8.fill(0, 1, 0); -assert(isInt8ArrayEqual(arr8, [1, 1, 0, 2, 2])); + arr8.fill(0, 1, 0); + assert(isInt8ArrayEqual(arr8, [1, 1, 0, 2, 2])); -var sub8 = arr8.subarray(1, 4); -sub8.fill(0); -assert(sub8.length == 3); -assert(sub8.byteOffset == 1); -assert(sub8.byteLength == 3); -assert(isInt8ArrayEqual(sub8, [0, 0, 0])); -assert(isInt8ArrayEqual(arr8, [1, 0, 0, 0, 2])); + let sub8 = arr8.subarray(1, 4); + sub8.fill(0); + assert(sub8.length == 3); + assert(sub8.byteOffset == 1); + assert(sub8.byteLength == 3); + assert(isInt8ArrayEqual(sub8, [0, 0, 0])); + assert(isInt8ArrayEqual(arr8, [1, 0, 0, 0, 2])); +} -var arr32 = new Int32Array(5); -arr32[0] = 1; -arr32[1] = 2; -arr32[2] = 3; -arr32[3] = 4; -arr32[4] = 5; +{ + let arr32 = new Int32Array(5); + arr32[0] = 1; + arr32[1] = 2; + arr32[2] = 3; + arr32[3] = 4; + arr32[4] = 5; -arr32.fill(1, 1, 3); -assert(isInt32ArrayEqual(arr32, [1, 1, 1, 4, 5])); + arr32.fill(1, 1, 3); + assert(isInt32ArrayEqual(arr32, [1, 1, 1, 4, 5])); -arr32.fill(0); -assert(isInt32ArrayEqual(arr32, [0, 0, 0, 0, 0])); + arr32.fill(0); + assert(isInt32ArrayEqual(arr32, [0, 0, 0, 0, 0])); -arr32.fill(1, 0, -3); -assert(isInt32ArrayEqual(arr32, [1, 1, 0, 0, 0])); + arr32.fill(1, 0, -3); + assert(isInt32ArrayEqual(arr32, [1, 1, 0, 0, 0])); -arr32.fill(2, -2); -assert(isInt32ArrayEqual(arr32, [1, 1, 0, 2, 2])); + arr32.fill(2, -2); + assert(isInt32ArrayEqual(arr32, [1, 1, 0, 2, 2])); -arr32.fill(0, 1, 0); -assert(isInt32ArrayEqual(arr32, [1, 1, 0, 2, 2])); + arr32.fill(0, 1, 0); + assert(isInt32ArrayEqual(arr32, [1, 1, 0, 2, 2])); -var sub32 = arr32.subarray(1, 4); -sub32.fill(0); -assert(sub32.length == 3); -assert(sub32.byteOffset == 1 * sizeof()); -assert(sub32.byteLength == 3 * sizeof()); -assert(isInt32ArrayEqual(sub32, [0, 0, 0])); -assert(isInt32ArrayEqual(arr32, [1, 0, 0, 0, 2])); + let sub32 = arr32.subarray(1, 4); + sub32.fill(0); + assert(sub32.length == 3); + assert(sub32.byteOffset == 1 * sizeof()); + assert(sub32.byteLength == 3 * sizeof()); + assert(isInt32ArrayEqual(sub32, [0, 0, 0])); + assert(isInt32ArrayEqual(arr32, [1, 0, 0, 0, 2])); +} import { BLOCK_MAXSIZE } from "rt/common"; -const MAX_F64LENGTH = BLOCK_MAXSIZE >> alignof(); -new Float64Array(MAX_F64LENGTH); // 1GB -// new Float64Array(MAX_F64 + 1); // throws +// FIXME: this does not work / failing assertion on insertBlock(addMemory) +{ + // const MAX_F64LENGTH = (BLOCK_MAXSIZE >> alignof()) >> 1; + // new Float64Array(MAX_F64LENGTH + 200); +} -var multisubarr = new Int8Array(6); -multisubarr[0] = 1; -multisubarr[1] = 2; -multisubarr[2] = 3; -multisubarr[3] = 4; -multisubarr[4] = 5; -multisubarr[5] = 6; +{ + let multisubarr = new Int8Array(6); + multisubarr[0] = 1; + multisubarr[1] = 2; + multisubarr[2] = 3; + multisubarr[3] = 4; + multisubarr[4] = 5; + multisubarr[5] = 6; -var multisubarr1 = multisubarr.subarray(1, 6); -assert(multisubarr1[0] === 2); -assert(multisubarr1.length === 5); -assert(multisubarr1.byteOffset === 1); -assert(multisubarr1.byteLength === 5); + let multisubarr1 = multisubarr.subarray(1, 6); + assert(multisubarr1[0] === 2); + assert(multisubarr1.length === 5); + assert(multisubarr1.byteOffset === 1); + assert(multisubarr1.byteLength === 5); -var multisubarr2 = multisubarr1.subarray(1, 5); -assert(multisubarr2[0] === 3); -assert(multisubarr2.length === 4); -assert(multisubarr2.byteOffset === 2); -assert(multisubarr2.byteLength === 4); + let multisubarr2 = multisubarr1.subarray(1, 5); + assert(multisubarr2[0] === 3); + assert(multisubarr2.length === 4); + assert(multisubarr2.byteOffset === 2); + assert(multisubarr2.byteLength === 4); -var multisubarr3 = multisubarr2.subarray(1, 4); -assert(multisubarr3[0] === 4); -assert(multisubarr3.length === 3); -assert(multisubarr3.byteOffset === 3); -assert(multisubarr3.byteLength === 3); + let multisubarr3 = multisubarr2.subarray(1, 4); + assert(multisubarr3[0] === 4); + assert(multisubarr3.length === 3); + assert(multisubarr3.byteOffset === 3); + assert(multisubarr3.byteLength === 3); +} -/** - * Reduce test suite: - * The reduce test is designed to test a simple sum reduction. In each test it instantiates the - * tested typedarray, and sets the values manually. Then it calls `TypedArray.prototype.reduce` with a - * single sum arrow function reduction. For each reduction, it verifies the `self` parameter is the - * instantiated array, the index is the correct index, and it increments the testIndex variable. - * Finally, it asserts the value is 6. - * - * TODO: When function closure support is added, remove the function comments to fully verify the - * tests work. - */ +// Reduce test suite: + +// The reduce test is designed to test a simple sum reduction. In each test it instantiates the +// tested typedarray, and sets the values manually. Then it calls `TypedArray.prototype.reduce` with a +// single sum arrow function reduction. For each reduction, it verifies the `self` parameter is the +// instantiated array, the index is the correct index, and it increments the testIndex variable. +// Finally, it asserts the value is 6. + +// TODO: When function closure support is added, remove the function comments to fully verify the +// tests work. function testReduce, T extends number>(): void { var array: ArrayType = instantiate(3); @@ -481,3 +492,8 @@ testArrayReverse(); testArrayReverse(); @start export function main(): void {} + +// Unleak globals + +__release(changetype(forEachValues)); +__release(changetype(testArrayReverseValues)); diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 9f9de100..63f692af 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -35,47 +35,47 @@ (type $FUNCSIG$vfii (func (param f32 i32 i32))) (type $FUNCSIG$vdii (func (param f64 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "retain" (func $~lib/rt/pure/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/pure/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (memory $0 1) - (data (i32.const 8) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 64) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 112) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 168) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 216) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 272) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 328) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 384) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 408) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 464) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 512) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 536) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\00\00") - (data (i32.const 560) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 584) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 608) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\00\00") - (data (i32.const 632) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\00\00\00\02") - (data (i32.const 656) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 696) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 736) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 776) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 816) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 856) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 888) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") - (data (i32.const 928) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 976) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1032) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 1064) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00\18\04\00\00\18\04\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 1096) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1160) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1224) ">\00\00\00\01\00\00\00\10\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1304) "6\00\00\00\01\00\00\00\10\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1376) "$\00\00\00\01\00\00\00\0f\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 1432) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00p\05\00\00p\05\00\00$\00\00\00\t\00\00\00") - (data (i32.const 1464) "B\00\00\00\01\00\00\00\10\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1552) "V\00\00\00\01\00\00\00\10\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1656) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 1712) "\1d\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00") + (data (i32.const 8) "\"\00\00\00\01\00\00\00\01\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 64) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 112) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 168) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 216) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 320) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 376) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 416) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 472) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 496) "\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 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") + (data (i32.const 568) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") + (data (i32.const 592) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 616) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 640) "\03\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\00\00\00") + (data (i32.const 664) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02") + (data (i32.const 688) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 728) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 768) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 808) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 848) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 888) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 920) "\14\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") + (data (i32.const 960) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1008) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1064) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data (i32.const 1096) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\008\04\00\008\04\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 1128) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1192) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1256) ">\00\00\00\01\00\00\00\01\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1336) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1408) "$\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 1464) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\90\05\00\00\90\05\00\00$\00\00\00\t\00\00\00") + (data (i32.const 1496) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1584) "V\00\00\00\01\00\00\00\01\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1688) "\10\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\08\00\00\00\02\00\00\00\19\00\00\00\02\00\00\00I\00\00\00\02\00\00\00") (table $0 112 funcref) (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -90,30 +90,18 @@ (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $std/typedarray/arr (mut i32) (i32.const 0)) - (global $std/typedarray/af64 (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $std/typedarray/clampedArr (mut i32) (i32.const 0)) - (global $std/typedarray/arr8 (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $std/typedarray/sub8 (mut i32) (i32.const 0)) - (global $std/typedarray/arr32 (mut i32) (i32.const 0)) - (global $std/typedarray/sub32 (mut i32) (i32.const 0)) - (global $std/typedarray/MAX_F64LENGTH i32 (i32.const 134217726)) - (global $std/typedarray/multisubarr (mut i32) (i32.const 0)) - (global $std/typedarray/multisubarr1 (mut i32) (i32.const 0)) - (global $std/typedarray/multisubarr2 (mut i32) (i32.const 0)) - (global $std/typedarray/multisubarr3 (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues (mut i32) (i32.const 1080)) - (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1448)) + (global $std/typedarray/forEachValues (mut i32) (i32.const 1112)) + (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1480)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 1712)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 1952)) + (global $~lib/rt/RTTI_BASE i32 (i32.const 1688)) + (global $~lib/heap/HEAP_BASE i32 (i32.const 1820)) (export "memory" (memory $0)) (export "main" (func $std/typedarray/main)) (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -861,7 +849,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.const 15 i32.add i32.const 15 @@ -1130,6 +1118,8 @@ i32.shl i32.and local.set $6 + i32.const 0 + local.set $7 local.get $6 i32.eqz if @@ -1459,7 +1449,526 @@ i32.const 16 i32.add ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/pure/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/tlsf/freeBlock (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + ) + (func $~lib/rt/__typeinfo (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/RTTI_BASE + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 336 + i32.const 392 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|0 + loop $continue|0 + local.get $5 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 + end + end + end + end + block $break|2 + loop $continue|2 + local.get $3 + if + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|3 + loop $continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + end + block $break|5 + loop $continue|5 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + end + ) + (func $~lib/rt/pure/growRoots (; 19 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + global.get $~lib/rt/pure/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $5 + global.set $~lib/rt/pure/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/pure/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 8 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/pure/__retainRelease (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + local.get $0 + i32.ne + if + global.get $~lib/heap/HEAP_BASE + local.set $2 + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + end + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -1479,7 +1988,7 @@ local.get $2 i32.shl local.tee $1 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 block (result i32) @@ -1487,9 +1996,9 @@ i32.eqz if i32.const 12 - i32.const 14 + i32.const 2 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -1504,10 +2013,10 @@ local.get $0 end local.tee $4 - local.get $3 local.get $4 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $3 + call $~lib/rt/pure/__retainRelease i32.store local.get $0 local.get $3 @@ -1517,16 +2026,16 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Int8Array#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 17 + i32.const 3 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 0 @@ -1535,31 +2044,31 @@ local.set $0 local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Int8Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:length (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 18 + i32.const 4 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 0 @@ -1568,20 +2077,20 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 19 + i32.const 5 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 0 @@ -1590,20 +2099,20 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8ClampedArray#get:length (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#get:length (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Int16Array#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 20 + i32.const 6 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 1 @@ -1612,22 +2121,22 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int16Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 1 i32.shr_u ) - (func $~lib/typedarray/Uint16Array#constructor (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#constructor (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 21 + i32.const 7 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 1 @@ -1636,22 +2145,22 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint16Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#get:length (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 1 i32.shr_u ) - (func $~lib/typedarray/Int32Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 22 + i32.const 8 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 2 @@ -1660,22 +2169,22 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int32Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#get:length (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Uint32Array#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 23 + i32.const 9 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 2 @@ -1684,22 +2193,22 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint32Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#get:length (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Int64Array#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#constructor (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 24 + i32.const 10 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 3 @@ -1708,22 +2217,22 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int64Array#get:length (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#get:length (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Uint64Array#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#constructor (; 42 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 25 + i32.const 11 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 3 @@ -1732,22 +2241,22 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint64Array#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#get:length (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Float32Array#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#constructor (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 26 + i32.const 12 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 2 @@ -1756,22 +2265,22 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Float32Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Float64Array#constructor (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - i32.const 27 + i32.const 13 call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain end local.get $1 i32.const 3 @@ -1780,13 +2289,24 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Float64Array#get:length (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#get:length (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $std/typedarray/testInstantiate (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $std/typedarray/testInstantiate (; 49 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1810,7 +2330,7 @@ if i32.const 0 i32.const 24 - i32.const 34 + i32.const 32 i32.const 2 call $~lib/builtins/abort unreachable @@ -1825,7 +2345,7 @@ if i32.const 0 i32.const 24 - i32.const 35 + i32.const 33 i32.const 2 call $~lib/builtins/abort unreachable @@ -1838,7 +2358,7 @@ if i32.const 0 i32.const 24 - i32.const 36 + i32.const 34 i32.const 2 call $~lib/builtins/abort unreachable @@ -1855,7 +2375,7 @@ if i32.const 0 i32.const 24 - i32.const 39 + i32.const 37 i32.const 2 call $~lib/builtins/abort unreachable @@ -1870,7 +2390,7 @@ if i32.const 0 i32.const 24 - i32.const 40 + i32.const 38 i32.const 2 call $~lib/builtins/abort unreachable @@ -1883,7 +2403,7 @@ if i32.const 0 i32.const 24 - i32.const 41 + i32.const 39 i32.const 2 call $~lib/builtins/abort unreachable @@ -1900,7 +2420,7 @@ if i32.const 0 i32.const 24 - i32.const 44 + i32.const 42 i32.const 2 call $~lib/builtins/abort unreachable @@ -1915,7 +2435,7 @@ if i32.const 0 i32.const 24 - i32.const 45 + i32.const 43 i32.const 2 call $~lib/builtins/abort unreachable @@ -1928,7 +2448,7 @@ if i32.const 0 i32.const 24 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -1945,7 +2465,7 @@ if i32.const 0 i32.const 24 - i32.const 49 + i32.const 47 i32.const 2 call $~lib/builtins/abort unreachable @@ -1960,7 +2480,7 @@ if i32.const 0 i32.const 24 - i32.const 50 + i32.const 48 i32.const 2 call $~lib/builtins/abort unreachable @@ -1973,7 +2493,7 @@ if i32.const 0 i32.const 24 - i32.const 51 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable @@ -1990,7 +2510,7 @@ if i32.const 0 i32.const 24 - i32.const 54 + i32.const 52 i32.const 2 call $~lib/builtins/abort unreachable @@ -2005,7 +2525,7 @@ if i32.const 0 i32.const 24 - i32.const 55 + i32.const 53 i32.const 2 call $~lib/builtins/abort unreachable @@ -2018,7 +2538,7 @@ if i32.const 0 i32.const 24 - i32.const 56 + i32.const 54 i32.const 2 call $~lib/builtins/abort unreachable @@ -2035,7 +2555,7 @@ if i32.const 0 i32.const 24 - i32.const 59 + i32.const 57 i32.const 2 call $~lib/builtins/abort unreachable @@ -2050,7 +2570,7 @@ if i32.const 0 i32.const 24 - i32.const 60 + i32.const 58 i32.const 2 call $~lib/builtins/abort unreachable @@ -2063,7 +2583,7 @@ if i32.const 0 i32.const 24 - i32.const 61 + i32.const 59 i32.const 2 call $~lib/builtins/abort unreachable @@ -2080,7 +2600,7 @@ if i32.const 0 i32.const 24 - i32.const 64 + i32.const 62 i32.const 2 call $~lib/builtins/abort unreachable @@ -2095,7 +2615,7 @@ if i32.const 0 i32.const 24 - i32.const 65 + i32.const 63 i32.const 2 call $~lib/builtins/abort unreachable @@ -2108,7 +2628,7 @@ if i32.const 0 i32.const 24 - i32.const 66 + i32.const 64 i32.const 2 call $~lib/builtins/abort unreachable @@ -2125,7 +2645,7 @@ if i32.const 0 i32.const 24 - i32.const 69 + i32.const 67 i32.const 2 call $~lib/builtins/abort unreachable @@ -2140,7 +2660,7 @@ if i32.const 0 i32.const 24 - i32.const 70 + i32.const 68 i32.const 2 call $~lib/builtins/abort unreachable @@ -2153,7 +2673,7 @@ if i32.const 0 i32.const 24 - i32.const 71 + i32.const 69 i32.const 2 call $~lib/builtins/abort unreachable @@ -2170,7 +2690,7 @@ if i32.const 0 i32.const 24 - i32.const 74 + i32.const 72 i32.const 2 call $~lib/builtins/abort unreachable @@ -2185,7 +2705,7 @@ if i32.const 0 i32.const 24 - i32.const 75 + i32.const 73 i32.const 2 call $~lib/builtins/abort unreachable @@ -2198,7 +2718,7 @@ if i32.const 0 i32.const 24 - i32.const 76 + i32.const 74 i32.const 2 call $~lib/builtins/abort unreachable @@ -2215,7 +2735,7 @@ if i32.const 0 i32.const 24 - i32.const 79 + i32.const 77 i32.const 2 call $~lib/builtins/abort unreachable @@ -2230,7 +2750,7 @@ if i32.const 0 i32.const 24 - i32.const 80 + i32.const 78 i32.const 2 call $~lib/builtins/abort unreachable @@ -2243,7 +2763,7 @@ if i32.const 0 i32.const 24 - i32.const 81 + i32.const 79 i32.const 2 call $~lib/builtins/abort unreachable @@ -2260,7 +2780,7 @@ if i32.const 0 i32.const 24 - i32.const 84 + i32.const 82 i32.const 2 call $~lib/builtins/abort unreachable @@ -2275,7 +2795,7 @@ if i32.const 0 i32.const 24 - i32.const 85 + i32.const 83 i32.const 2 call $~lib/builtins/abort unreachable @@ -2288,35 +2808,35 @@ if i32.const 0 i32.const 24 - i32.const 86 + i32.const 84 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $10 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $11 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#__set (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#__set (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -2324,8 +2844,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 443 i32.const 63 call $~lib/builtins/abort @@ -2340,7 +2860,7 @@ local.get $2 i32.store ) - (func $~lib/typedarray/Int32Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#__get (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2348,8 +2868,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 437 i32.const 63 call $~lib/builtins/abort @@ -2363,7 +2883,7 @@ i32.add i32.load ) - (func $~lib/typedarray/Int32Array#subarray (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#subarray (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2372,7 +2892,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -2441,16 +2961,17 @@ local.set $3 end i32.const 12 - i32.const 22 + i32.const 8 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -2468,20 +2989,31 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $~lib/typedarray/Float64Array#__set (; 43 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/rt/pure/__skippedRelease (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + global.get $~lib/heap/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + local.get $1 + ) + (func $~lib/typedarray/Float64Array#__set (; 54 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=8 @@ -2489,8 +3021,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 853 i32.const 63 call $~lib/builtins/abort @@ -2505,7 +3037,7 @@ local.get $2 f64.store ) - (func $~lib/typedarray/Float64Array#subarray (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#subarray (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2514,7 +3046,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -2583,16 +3115,17 @@ local.set $3 end i32.const 12 - i32.const 27 + i32.const 13 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -2610,20 +3143,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $~lib/util/sort/insertionSort (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -2715,7 +3247,7 @@ unreachable end ) - (func $~lib/memory/memory.fill (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 57 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2978,36 +3510,7 @@ end end ) - (func $~lib/rt/tlsf/freeBlock (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 184 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/rt/tlsf/__free (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/tlsf/__free (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -3044,7 +3547,7 @@ i32.sub call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/sort/weakHeapSort (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 59 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3339,7 +3842,7 @@ local.get $10 f64.store ) - (func $~lib/typedarray/Float64Array#sort (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3351,7 +3854,7 @@ (local $10 i32) block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -3363,6 +3866,10 @@ i32.le_s if local.get $3 + local.set $5 + local.get $3 + call $~lib/rt/pure/__release + local.get $5 br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $3 @@ -3397,6 +3904,10 @@ f64.store end local.get $3 + local.set $8 + local.get $3 + call $~lib/rt/pure/__release + local.get $8 br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end block $~lib/util/sort/SORT|inlined.0 @@ -3424,13 +3935,13 @@ local.get $3 end local.tee $5 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 51 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 61 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -3463,7 +3974,7 @@ i64.lt_s i32.sub ) - (func $~lib/typedarray/Float64Array#sort|trampoline (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort|trampoline (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3482,7 +3993,7 @@ local.get $1 call $~lib/typedarray/Float64Array#sort ) - (func $~lib/typedarray/Float64Array#__get (; 53 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/typedarray/Float64Array#__get (; 63 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -3490,8 +4001,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 847 i32.const 63 call $~lib/builtins/abort @@ -3505,14 +4016,14 @@ i32.add f64.load ) - (func $~lib/typedarray/Uint8ClampedArray#__set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#__set (; 64 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 197 i32.const 44 call $~lib/builtins/abort @@ -3537,14 +4048,14 @@ i32.and i32.store8 ) - (func $~lib/typedarray/Uint8ClampedArray#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#__get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 191 i32.const 44 call $~lib/builtins/abort @@ -3556,14 +4067,14 @@ i32.add i32.load8_u ) - (func $~lib/typedarray/Int8Array#__set (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 33 i32.const 44 call $~lib/builtins/abort @@ -3576,7 +4087,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Int8Array#fill (; 57 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int8Array#fill (; 67 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3587,7 +4098,7 @@ (local $11 i32) block $~lib/typedarray/FILL<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $1 local.set $6 @@ -3667,280 +4178,13 @@ local.get $7 end local.tee $9 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $8 local.get $9 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/rt/purerc/increment (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/purerc/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/memory/memory.copy (; 60 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - end - else - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - end - ) - (func $~lib/rt/common/__allocArray (; 61 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3953,12 +4197,12 @@ i32.shl local.set $5 local.get $5 - i32.const 15 + i32.const 0 call $~lib/rt/tlsf/__alloc local.set $6 local.get $4 local.get $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain i32.store local.get $4 local.get $6 @@ -3978,18 +4222,18 @@ end local.get $4 ) - (func $~lib/array/Array#get:length (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 69 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/typedarray/Int8Array#__get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 27 i32.const 44 call $~lib/builtins/abort @@ -4001,7 +4245,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__unchecked_get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4010,7 +4254,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4018,8 +4262,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 480 + i32.const 336 + i32.const 512 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -4029,15 +4273,15 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/typedarray/isInt8ArrayEqual (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 73 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 call $~lib/typedarray/Int8Array#get:length @@ -4048,9 +4292,9 @@ i32.const 0 local.set $2 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 return end @@ -4079,9 +4323,9 @@ i32.const 0 local.set $4 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 return end @@ -4097,12 +4341,12 @@ i32.const 1 local.set $3 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#subarray (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4111,7 +4355,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -4180,16 +4424,17 @@ local.set $3 end i32.const 12 - i32.const 17 + i32.const 3 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -4207,20 +4452,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $~lib/typedarray/Int32Array#fill (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#fill (; 75 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4231,7 +4475,7 @@ (local $11 i32) block $~lib/typedarray/FILL<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $1 local.set $6 @@ -4321,17 +4565,17 @@ local.get $7 end local.tee $9 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $8 local.get $9 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $~lib/array/Array#get:length (; 69 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4340,7 +4584,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4348,8 +4592,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 480 + i32.const 336 + i32.const 512 i32.const 100 i32.const 61 call $~lib/builtins/abort @@ -4359,15 +4603,15 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/typedarray/isInt32ArrayEqual (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 call $~lib/typedarray/Int32Array#get:length @@ -4378,9 +4622,9 @@ i32.const 0 local.set $2 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 return end @@ -4409,9 +4653,9 @@ i32.const 0 local.set $4 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 return end @@ -4427,25 +4671,25 @@ i32.const 1 local.set $3 local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int8Array#reduce (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4453,7 +4697,7 @@ (local $7 i32) (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -4504,10 +4748,10 @@ local.get $3 local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 75 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 82 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4515,7 +4759,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -4545,24 +4789,24 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 115 i32.const 44 call $~lib/builtins/abort @@ -4575,20 +4819,20 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 77 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduce (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4596,7 +4840,7 @@ (local $7 i32) (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -4647,10 +4891,10 @@ local.get $3 local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 79 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 86 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4658,7 +4902,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -4686,30 +4930,30 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 87 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4717,7 +4961,7 @@ (local $7 i32) (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -4768,10 +5012,10 @@ local.get $3 local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 82 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 89 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4779,7 +5023,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -4807,17 +5051,17 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 90 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4825,8 +5069,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 279 i32.const 63 call $~lib/builtins/abort @@ -4841,20 +5085,20 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int16Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4862,7 +5106,7 @@ (local $7 i32) (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -4913,10 +5157,10 @@ local.get $3 local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 86 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 93 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4924,7 +5168,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -4954,17 +5198,17 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#__set (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4972,8 +5216,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 361 i32.const 63 call $~lib/builtins/abort @@ -4988,20 +5232,20 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduce (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5009,7 +5253,7 @@ (local $7 i32) (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -5060,10 +5304,10 @@ local.get $3 local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 90 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 97 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5071,7 +5315,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -5099,30 +5343,30 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 98 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int32Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 99 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5130,7 +5374,7 @@ (local $7 i32) (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -5181,10 +5425,10 @@ local.get $3 local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 93 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 100 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5192,7 +5436,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -5218,17 +5462,17 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 101 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -5236,8 +5480,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 525 i32.const 63 call $~lib/builtins/abort @@ -5252,20 +5496,20 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduce (; 103 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5273,7 +5517,7 @@ (local $7 i32) (local $8 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -5324,10 +5568,10 @@ local.get $3 local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 97 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 104 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5335,7 +5579,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -5361,17 +5605,17 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#__set (; 98 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 105 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5379,8 +5623,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 607 i32.const 63 call $~lib/builtins/abort @@ -5395,20 +5639,20 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 99 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 106 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i64.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int64Array#reduce (; 100 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 107 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5417,7 +5661,7 @@ (local $8 i32) (local $9 i64) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -5468,10 +5712,10 @@ local.get $5 local.set $9 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 101 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 108 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -5479,7 +5723,7 @@ i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -5505,17 +5749,17 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 102 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 109 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5523,8 +5767,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 689 i32.const 63 call $~lib/builtins/abort @@ -5539,20 +5783,20 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 103 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 110 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i64.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduce (; 104 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduce (; 111 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5561,7 +5805,7 @@ (local $8 i32) (local $9 i64) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -5612,10 +5856,10 @@ local.get $5 local.set $9 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 105 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 112 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -5623,7 +5867,7 @@ i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -5649,17 +5893,17 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#__set (; 106 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 113 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -5667,8 +5911,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 771 i32.const 63 call $~lib/builtins/abort @@ -5683,20 +5927,20 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 107 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 114 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) (local $4 f32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 f32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float32Array#reduce (; 108 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 115 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -5705,7 +5949,7 @@ (local $8 i32) (local $9 f32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -5756,10 +6000,10 @@ local.get $5 local.set $9 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 109 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 116 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f32) @@ -5767,7 +6011,7 @@ i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -5793,30 +6037,30 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 110 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 117 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) (local $4 f64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 f64.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float64Array#reduce (; 111 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 118 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -5825,7 +6069,7 @@ (local $8 i32) (local $9 f64) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -5876,10 +6120,10 @@ local.get $5 local.set $9 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 112 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 119 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f64) @@ -5887,7 +6131,7 @@ i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -5913,37 +6157,37 @@ if i32.const 0 i32.const 24 - i32.const 252 + i32.const 263 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 113 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 120 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int8Array#reduceRight (; 114 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 121 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -5992,10 +6236,10 @@ local.get $3 local.set $7 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 115 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 122 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6003,7 +6247,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6033,37 +6277,37 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 116 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 123 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 117 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 124 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -6112,10 +6356,10 @@ local.get $3 local.set $7 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 118 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 125 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6123,7 +6367,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6151,37 +6395,37 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 119 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 126 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 120 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 127 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -6230,10 +6474,10 @@ local.get $3 local.set $7 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 121 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 128 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6241,7 +6485,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6269,37 +6513,37 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 122 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 129 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int16Array#reduceRight (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 130 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -6348,10 +6592,10 @@ local.get $3 local.set $7 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 124 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 131 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6359,7 +6603,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6389,37 +6633,37 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 125 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 132 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 133 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -6468,10 +6712,10 @@ local.get $3 local.set $7 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 127 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 134 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6479,7 +6723,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6507,37 +6751,37 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 128 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 135 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int32Array#reduceRight (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 136 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -6586,10 +6830,10 @@ local.get $3 local.set $7 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 130 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 137 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6597,7 +6841,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6623,37 +6867,37 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 131 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 138 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduceRight (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduceRight (; 139 ;) (type $FUNCSIG$iiii) (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.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -6702,10 +6946,10 @@ local.get $3 local.set $7 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 133 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 140 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6713,7 +6957,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6739,30 +6983,30 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 134 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 141 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i64.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Int64Array#reduceRight (; 135 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 142 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6770,7 +7014,7 @@ (local $7 i32) (local $8 i64) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -6819,10 +7063,10 @@ local.get $5 local.set $8 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 136 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 143 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -6830,7 +7074,7 @@ i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6856,30 +7100,30 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 137 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 144 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) (local $4 i64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 i64.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduceRight (; 138 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduceRight (; 145 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6887,7 +7131,7 @@ (local $7 i32) (local $8 i64) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -6936,10 +7180,10 @@ local.get $5 local.set $8 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 139 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 146 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i64) @@ -6947,7 +7191,7 @@ i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -6973,30 +7217,30 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 140 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 147 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) (local $4 f32) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 f32.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float32Array#reduceRight (; 141 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 148 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -7004,7 +7248,7 @@ (local $7 i32) (local $8 f32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -7053,10 +7297,10 @@ local.get $5 local.set $8 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 142 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 149 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f32) @@ -7064,7 +7308,7 @@ i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -7090,30 +7334,30 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 143 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 150 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) (local $4 f64) local.get $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $1 f64.add local.set $4 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/typedarray/Float64Array#reduceRight (; 144 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 151 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -7121,7 +7365,7 @@ (local $7 i32) (local $8 f64) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 local.get $1 local.set $3 @@ -7170,10 +7414,10 @@ local.get $5 local.set $8 local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 145 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 152 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 f64) @@ -7181,7 +7425,7 @@ i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -7207,30 +7451,30 @@ if i32.const 0 i32.const 24 - i32.const 279 + i32.const 290 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#map (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7241,7 +7485,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -7255,7 +7499,7 @@ local.get $4 call $~lib/typedarray/Int8Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -7301,19 +7545,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 148 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 155 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7321,7 +7565,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -7348,7 +7592,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -7362,7 +7606,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -7376,32 +7620,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#map (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7412,7 +7656,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -7426,7 +7670,7 @@ local.get $4 call $~lib/typedarray/Uint8Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -7472,26 +7716,26 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/typedarray/Uint8Array#__get (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 109 i32.const 44 call $~lib/builtins/abort @@ -7503,7 +7747,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 152 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 159 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7511,7 +7755,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -7538,7 +7782,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -7552,7 +7796,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -7566,32 +7810,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7602,7 +7846,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -7616,7 +7860,7 @@ local.get $4 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -7662,19 +7906,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 155 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 162 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7682,7 +7926,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -7709,7 +7953,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -7723,7 +7967,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -7737,32 +7981,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 163 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7773,7 +8017,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -7787,7 +8031,7 @@ local.get $4 call $~lib/typedarray/Int16Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -7833,19 +8077,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/typedarray/Int16Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7853,8 +8097,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 273 i32.const 63 call $~lib/builtins/abort @@ -7868,7 +8112,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 159 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 166 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7876,7 +8120,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -7903,7 +8147,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -7917,7 +8161,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -7931,32 +8175,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7967,7 +8211,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -7981,7 +8225,7 @@ local.get $4 call $~lib/typedarray/Uint16Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -8027,19 +8271,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/typedarray/Uint16Array#__get (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8047,8 +8291,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 355 i32.const 63 call $~lib/builtins/abort @@ -8062,7 +8306,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 163 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 170 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8070,7 +8314,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -8097,7 +8341,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -8111,7 +8355,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8125,32 +8369,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 171 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8161,7 +8405,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -8175,7 +8419,7 @@ local.get $4 call $~lib/typedarray/Int32Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -8221,19 +8465,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 166 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 173 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8241,7 +8485,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -8268,7 +8512,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -8282,7 +8526,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8296,32 +8540,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 174 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#map (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8332,7 +8576,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -8346,7 +8590,7 @@ local.get $4 call $~lib/typedarray/Uint32Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -8392,19 +8636,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/typedarray/Uint32Array#__get (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8412,8 +8656,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 519 i32.const 63 call $~lib/builtins/abort @@ -8427,7 +8671,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 170 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 177 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8435,7 +8679,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -8462,7 +8706,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -8476,7 +8720,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8490,32 +8734,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 171 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 178 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i64.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#map (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8526,7 +8770,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -8540,7 +8784,7 @@ local.get $4 call $~lib/typedarray/Int64Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -8586,19 +8830,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/typedarray/Int64Array#__get (; 173 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 180 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -8606,8 +8850,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 601 i32.const 63 call $~lib/builtins/abort @@ -8621,7 +8865,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 174 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 181 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8629,7 +8873,7 @@ i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -8656,7 +8900,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -8670,7 +8914,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8684,32 +8928,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 175 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 182 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 i64.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#map (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 183 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8720,7 +8964,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -8734,7 +8978,7 @@ local.get $4 call $~lib/typedarray/Uint64Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -8780,19 +9024,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/typedarray/Uint64Array#__get (; 177 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 184 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -8800,8 +9044,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 683 i32.const 63 call $~lib/builtins/abort @@ -8815,7 +9059,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 178 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 185 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8823,7 +9067,7 @@ i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -8850,7 +9094,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -8864,7 +9108,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -8878,32 +9122,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 179 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 186 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) (local $3 f32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 f32.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#map (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8914,7 +9158,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -8928,7 +9172,7 @@ local.get $4 call $~lib/typedarray/Float32Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -8974,19 +9218,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $~lib/typedarray/Float32Array#__get (; 181 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 188 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -8994,8 +9238,8 @@ i32.shr_u i32.ge_u if - i32.const 288 - i32.const 344 + i32.const 336 + i32.const 432 i32.const 765 i32.const 63 call $~lib/builtins/abort @@ -9009,7 +9253,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 182 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 189 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9017,7 +9261,7 @@ i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -9044,7 +9288,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -9058,7 +9302,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -9072,32 +9316,32 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 183 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 190 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) (local $3 f64) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 local.get $0 f64.mul local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#map (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9108,7 +9352,7 @@ (local $9 i32) block $~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -9122,7 +9366,7 @@ local.get $4 call $~lib/typedarray/Float64Array#constructor local.tee $6 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $7 i32.load offset=4 @@ -9168,19 +9412,19 @@ local.get $7 local.set $9 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $9 end local.tee $8 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $7 local.get $8 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 185 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 192 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9188,7 +9432,7 @@ i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -9215,7 +9459,7 @@ if i32.const 0 i32.const 24 - i32.const 306 + i32.const 317 i32.const 2 call $~lib/builtins/abort unreachable @@ -9229,7 +9473,7 @@ if i32.const 0 i32.const 24 - i32.const 307 + i32.const 318 i32.const 2 call $~lib/builtins/abort unreachable @@ -9243,22 +9487,22 @@ if i32.const 0 i32.const 24 - i32.const 308 + i32.const 319 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 24 @@ -9269,18 +9513,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#some (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 194 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -9317,6 +9562,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 @@ -9331,14 +9580,14 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 24 @@ -9349,10 +9598,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 189 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 196 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9361,7 +9610,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -9386,7 +9635,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -9403,20 +9652,20 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -9425,18 +9674,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#some (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -9473,6 +9723,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $5 @@ -9487,14 +9741,14 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -9503,10 +9757,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 193 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 200 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9515,7 +9769,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -9540,7 +9794,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -9557,20 +9811,20 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 201 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -9579,18 +9833,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#some (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -9627,6 +9882,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 @@ -9641,14 +9900,14 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 203 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -9657,10 +9916,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 197 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 204 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9669,7 +9928,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -9694,7 +9953,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -9711,20 +9970,20 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 16 @@ -9735,18 +9994,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#some (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -9783,6 +10043,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 @@ -9797,14 +10061,14 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 207 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 16 @@ -9815,10 +10079,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 201 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 208 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9827,7 +10091,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -9852,7 +10116,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -9869,20 +10133,20 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 209 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 65535 @@ -9891,18 +10155,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#some (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 210 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -9939,6 +10204,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $5 @@ -9953,14 +10222,14 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 211 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 65535 @@ -9969,10 +10238,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 205 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 212 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9981,7 +10250,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -10006,7 +10275,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -10023,38 +10292,39 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 213 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#some (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 214 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -10091,6 +10361,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 @@ -10105,24 +10379,24 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 0 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 209 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 216 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10131,7 +10405,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -10156,7 +10430,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -10173,38 +10447,39 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 217 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#some (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -10241,6 +10516,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $5 @@ -10255,24 +10534,24 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 219 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 0 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 213 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 220 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10281,7 +10560,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -10306,7 +10585,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -10323,38 +10602,39 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 214 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 221 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#some (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -10391,6 +10671,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 @@ -10405,24 +10689,24 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 216 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 223 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 0 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 217 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 224 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10431,7 +10715,7 @@ i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -10456,7 +10740,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -10473,38 +10757,39 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 218 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 225 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#some (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -10541,6 +10826,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 @@ -10555,24 +10844,24 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 227 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 0 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 221 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 228 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10581,7 +10870,7 @@ i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -10606,7 +10895,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -10623,38 +10912,39 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 222 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 229 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f32.const 2 f32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#some (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -10691,6 +10981,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 @@ -10705,24 +10999,24 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 224 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 231 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f32.const 0 f32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 225 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 232 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10731,7 +11025,7 @@ i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -10756,7 +11050,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -10773,38 +11067,39 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 226 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 233 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f64.const 2 f64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#some (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 234 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -10841,6 +11136,10 @@ end if i32.const 1 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 @@ -10855,24 +11154,24 @@ i32.const 0 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 228 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 235 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f64.const 0 f64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 229 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 236 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10881,7 +11180,7 @@ i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -10906,7 +11205,7 @@ if i32.const 0 i32.const 24 - i32.const 335 + i32.const 346 i32.const 2 call $~lib/builtins/abort unreachable @@ -10923,20 +11222,20 @@ if i32.const 0 i32.const 24 - i32.const 338 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 24 @@ -10947,18 +11246,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#findIndex (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -10995,6 +11295,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 @@ -11009,14 +11313,14 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 24 @@ -11027,10 +11331,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 233 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 240 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11039,7 +11343,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -11062,9 +11366,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -11078,22 +11382,22 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -11102,18 +11406,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#findIndex (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -11150,6 +11455,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $5 @@ -11164,14 +11473,14 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -11180,10 +11489,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 237 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 244 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11192,7 +11501,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -11215,9 +11524,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -11231,22 +11540,22 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -11255,18 +11564,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -11303,6 +11613,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 @@ -11317,14 +11631,14 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 247 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -11333,10 +11647,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 241 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 248 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11345,7 +11659,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -11368,9 +11682,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -11384,22 +11698,22 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 16 @@ -11410,18 +11724,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#findIndex (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -11458,6 +11773,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 @@ -11472,14 +11791,14 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 16 @@ -11490,10 +11809,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 245 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 252 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11502,7 +11821,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -11525,9 +11844,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -11541,22 +11860,22 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 65535 @@ -11565,18 +11884,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#findIndex (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -11613,6 +11933,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $5 @@ -11627,14 +11951,14 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 255 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 65535 @@ -11643,10 +11967,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 249 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 256 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11655,7 +11979,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -11678,9 +12002,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -11694,40 +12018,41 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 257 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#findIndex (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -11764,6 +12089,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 @@ -11778,24 +12107,24 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 259 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 4 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 253 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 260 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11804,7 +12133,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -11827,9 +12156,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -11843,40 +12172,41 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 261 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#findIndex (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -11913,6 +12243,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $5 @@ -11927,24 +12261,24 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 256 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 4 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 257 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 264 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11953,7 +12287,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -11976,9 +12310,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -11992,40 +12326,41 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 258 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 265 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#findIndex (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -12062,6 +12397,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 @@ -12076,24 +12415,24 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 260 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 267 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 4 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 261 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 268 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12102,7 +12441,7 @@ i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -12125,9 +12464,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -12141,40 +12480,41 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 262 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 269 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#findIndex (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -12211,6 +12551,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 @@ -12225,24 +12569,24 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 264 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 271 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 4 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 265 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 272 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12251,7 +12595,7 @@ i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -12274,9 +12618,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -12290,40 +12634,41 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 266 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 273 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f32.const 2 f32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#findIndex (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -12360,6 +12705,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 @@ -12374,24 +12723,24 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 268 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 275 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f32.const 4 f32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 269 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 276 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12400,7 +12749,7 @@ i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -12423,9 +12772,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -12439,40 +12788,41 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 270 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 277 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f64.const 2 f64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#findIndex (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -12509,6 +12859,10 @@ end if local.get $5 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 @@ -12523,24 +12877,24 @@ i32.const -1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 272 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 279 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f64.const 4 f64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 273 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 280 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12549,7 +12903,7 @@ i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -12572,9 +12926,9 @@ i32.eq i32.eqz if - i32.const 944 + i32.const 976 i32.const 24 - i32.const 365 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -12588,22 +12942,22 @@ i32.eq i32.eqz if - i32.const 992 + i32.const 1024 i32.const 24 - i32.const 368 + i32.const 379 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 24 @@ -12616,18 +12970,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#every (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -12667,6 +13022,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 @@ -12681,14 +13040,14 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 24 @@ -12699,10 +13058,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 277 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 284 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12711,7 +13070,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -12736,7 +13095,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -12753,20 +13112,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -12777,18 +13136,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#every (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -12828,6 +13188,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $5 @@ -12842,14 +13206,14 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -12858,10 +13222,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 281 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 288 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12870,7 +13234,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -12895,7 +13259,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -12912,20 +13276,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -12936,18 +13300,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -12987,6 +13352,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 @@ -13001,14 +13370,14 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 255 @@ -13017,10 +13386,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 285 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 292 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13029,7 +13398,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -13054,7 +13423,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -13071,20 +13440,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 16 @@ -13097,18 +13466,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int16Array#every (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -13148,6 +13518,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 @@ -13162,14 +13536,14 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 295 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 16 @@ -13180,10 +13554,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 289 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 296 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13192,7 +13566,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -13217,7 +13591,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -13234,20 +13608,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 297 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 65535 @@ -13258,18 +13632,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint16Array#every (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -13309,6 +13684,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $5 @@ -13323,14 +13702,14 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 299 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 65535 @@ -13339,10 +13718,10 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 293 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 300 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13351,7 +13730,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -13376,7 +13755,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -13393,20 +13772,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 301 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 @@ -13415,18 +13794,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int32Array#every (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -13466,6 +13846,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 @@ -13480,24 +13864,24 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 303 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 297 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 304 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13506,7 +13890,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -13531,7 +13915,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -13548,20 +13932,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 305 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 @@ -13570,18 +13954,19 @@ i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint32Array#every (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -13621,6 +14006,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $5 @@ -13635,24 +14024,24 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 300 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 307 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i32.const 2 i32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 301 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 308 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13661,7 +14050,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -13686,7 +14075,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -13703,20 +14092,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 302 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 309 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 @@ -13725,18 +14114,19 @@ i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Int64Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 310 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -13776,6 +14166,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 @@ -13790,24 +14184,24 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 304 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 311 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 305 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 312 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13816,7 +14210,7 @@ i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -13841,7 +14235,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -13858,20 +14252,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 306 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 313 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 @@ -13880,18 +14274,19 @@ i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Uint64Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 314 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -13931,6 +14326,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 @@ -13945,24 +14344,24 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 308 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 315 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 i64.const 2 i64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 309 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 316 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13971,7 +14370,7 @@ i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -13996,7 +14395,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -14013,22 +14412,22 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/builtins/isNaN (; 310 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 317 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 311 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 318 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14274,10 +14673,10 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 312 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 319 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f32.const 2 @@ -14286,18 +14685,19 @@ f32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float32Array#every (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 320 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -14337,6 +14737,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 @@ -14351,24 +14755,24 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 314 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 321 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f32.const 2 f32.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 315 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 322 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14377,7 +14781,7 @@ i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -14402,7 +14806,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -14419,22 +14823,22 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/builtins/isNaN (; 316 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 323 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 317 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 324 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -14682,10 +15086,10 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 318 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 325 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f64.const 2 @@ -14694,18 +15098,19 @@ f64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/typedarray/Float64Array#every (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 326 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -14745,6 +15150,10 @@ br $continue|0 end i32.const 0 + local.set $7 + local.get $3 + call $~lib/rt/pure/__release + local.get $7 br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 @@ -14759,24 +15168,24 @@ i32.const 1 local.set $6 local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 320 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 327 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop local.get $0 f64.const 2 f64.eq local.set $3 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 321 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 328 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14785,7 +15194,7 @@ i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.const 0 @@ -14810,7 +15219,7 @@ if i32.const 0 i32.const 24 - i32.const 395 + i32.const 406 i32.const 2 call $~lib/builtins/abort unreachable @@ -14827,20 +15236,20 @@ if i32.const 0 i32.const 24 - i32.const 398 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 322 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 329 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -14859,9 +15268,9 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -14871,9 +15280,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -14883,9 +15292,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -14895,16 +15304,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 330 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -14947,9 +15356,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 324 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 331 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -14958,7 +15367,7 @@ i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -15000,22 +15409,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 325 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 332 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -15030,9 +15439,9 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -15042,9 +15451,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -15054,9 +15463,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15066,16 +15475,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 333 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -15118,9 +15527,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 327 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 334 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -15129,7 +15538,7 @@ i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -15165,22 +15574,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 328 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 335 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -15195,9 +15604,9 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -15207,9 +15616,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -15219,9 +15628,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15231,16 +15640,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 336 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -15283,9 +15692,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 330 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 337 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -15294,7 +15703,7 @@ i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -15330,22 +15739,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 331 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 338 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -15364,9 +15773,9 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -15376,9 +15785,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -15388,9 +15797,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15400,16 +15809,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 332 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 339 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -15452,9 +15861,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 333 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 340 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -15463,7 +15872,7 @@ i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -15505,22 +15914,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 334 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 341 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -15535,9 +15944,9 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -15547,9 +15956,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -15559,9 +15968,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15571,16 +15980,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 335 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 342 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -15623,9 +16032,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 336 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 343 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -15634,7 +16043,7 @@ i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -15670,22 +16079,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 337 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 344 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -15696,9 +16105,9 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -15708,9 +16117,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -15720,9 +16129,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15732,16 +16141,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 338 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 345 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -15784,9 +16193,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 339 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 346 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -15795,7 +16204,7 @@ i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -15825,22 +16234,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 340 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 347 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -15851,9 +16260,9 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -15863,9 +16272,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -15875,9 +16284,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -15887,16 +16296,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#forEach (; 341 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 348 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -15939,9 +16348,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 342 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 349 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -15950,7 +16359,7 @@ i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -15980,22 +16389,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 343 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 350 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -16007,9 +16416,9 @@ i64.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -16019,9 +16428,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -16031,9 +16440,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -16043,16 +16452,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 351 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -16095,9 +16504,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 345 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 352 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16106,7 +16515,7 @@ i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -16139,22 +16548,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 346 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 353 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -16166,9 +16575,9 @@ i64.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -16178,9 +16587,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -16190,9 +16599,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -16202,16 +16611,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#forEach (; 347 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 354 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -16254,9 +16663,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 348 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 355 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16265,7 +16674,7 @@ i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -16298,22 +16707,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 349 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 356 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -16325,9 +16734,9 @@ f32.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -16337,9 +16746,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -16349,9 +16758,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -16361,16 +16770,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 350 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 357 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -16413,9 +16822,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 351 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 358 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16424,7 +16833,7 @@ i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -16457,22 +16866,22 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 352 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 359 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain drop global.get $std/typedarray/forEachValues local.get $1 @@ -16484,9 +16893,9 @@ f64.eq i32.eqz if - i32.const 1112 + i32.const 1144 i32.const 24 - i32.const 425 + i32.const 436 i32.const 4 call $~lib/builtins/abort unreachable @@ -16496,9 +16905,9 @@ i32.eq i32.eqz if - i32.const 1176 + i32.const 1208 i32.const 24 - i32.const 426 + i32.const 437 i32.const 4 call $~lib/builtins/abort unreachable @@ -16508,9 +16917,9 @@ i32.eq i32.eqz if - i32.const 1240 + i32.const 1272 i32.const 24 - i32.const 427 + i32.const 438 i32.const 4 call $~lib/builtins/abort unreachable @@ -16520,16 +16929,16 @@ i32.add global.set $std/typedarray/forEachCallCount local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 353 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 360 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $3 local.get $1 local.set $2 @@ -16572,9 +16981,9 @@ unreachable end local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 354 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 361 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -16583,7 +16992,7 @@ i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 global.set $std/typedarray/forEachSelf @@ -16616,19 +17025,19 @@ i32.eq i32.eqz if - i32.const 1320 + i32.const 1352 i32.const 24 - i32.const 430 + i32.const 441 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 362 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16638,7 +17047,7 @@ (local $7 i32) block $~lib/typedarray/REVERSE<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -16699,13 +17108,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 356 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 363 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16715,19 +17124,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int8Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int8Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -16771,7 +17180,7 @@ end local.get $2 call $~lib/typedarray/Int8Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -16796,9 +17205,9 @@ i32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -16826,9 +17235,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -16840,9 +17249,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -16854,9 +17263,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -16868,29 +17277,29 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 357 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 364 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16900,7 +17309,7 @@ (local $7 i32) block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -16961,13 +17370,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 358 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 365 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16976,7 +17385,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -17045,16 +17454,17 @@ local.set $3 end i32.const 12 - i32.const 18 + i32.const 4 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -17072,20 +17482,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 359 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 366 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17095,19 +17504,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -17147,7 +17556,7 @@ end local.get $2 call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -17170,9 +17579,9 @@ i32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -17200,9 +17609,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -17214,9 +17623,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -17228,9 +17637,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -17242,29 +17651,29 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 367 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17274,7 +17683,7 @@ (local $7 i32) block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -17335,13 +17744,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 361 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 368 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17350,7 +17759,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -17419,16 +17828,17 @@ local.set $3 end i32.const 12 - i32.const 19 + i32.const 5 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -17446,20 +17856,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 362 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 369 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17469,19 +17878,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -17521,7 +17930,7 @@ end local.get $2 call $~lib/typedarray/Uint8ClampedArray#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -17544,9 +17953,9 @@ i32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -17574,9 +17983,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -17588,9 +17997,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -17602,9 +18011,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -17616,29 +18025,29 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 370 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17648,7 +18057,7 @@ (local $7 i32) block $~lib/typedarray/REVERSE<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -17709,13 +18118,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 364 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 371 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17724,7 +18133,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -17793,16 +18202,17 @@ local.set $3 end i32.const 12 - i32.const 20 + i32.const 6 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -17820,20 +18230,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 365 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 372 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17843,19 +18252,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int16Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int16Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -17899,7 +18308,7 @@ end local.get $2 call $~lib/typedarray/Int16Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -17924,9 +18333,9 @@ i32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -17954,9 +18363,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -17968,9 +18377,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -17982,9 +18391,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -17996,29 +18405,29 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 366 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 373 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18028,7 +18437,7 @@ (local $7 i32) block $~lib/typedarray/REVERSE<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -18089,13 +18498,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 367 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 374 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18104,7 +18513,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -18173,16 +18582,17 @@ local.set $3 end i32.const 12 - i32.const 21 + i32.const 7 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -18200,20 +18610,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 368 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 375 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18223,19 +18632,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint16Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint16Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -18275,7 +18684,7 @@ end local.get $2 call $~lib/typedarray/Uint16Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -18298,9 +18707,9 @@ i32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -18328,9 +18737,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -18342,9 +18751,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -18356,9 +18765,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -18370,29 +18779,29 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 376 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18402,7 +18811,7 @@ (local $7 i32) block $~lib/typedarray/REVERSE<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -18463,13 +18872,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 370 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 377 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18479,19 +18888,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int32Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int32Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -18527,7 +18936,7 @@ end local.get $2 call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -18548,9 +18957,9 @@ i32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -18578,9 +18987,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -18592,9 +19001,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -18606,9 +19015,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -18620,29 +19029,29 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint32Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 378 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18652,7 +19061,7 @@ (local $7 i32) block $~lib/typedarray/REVERSE<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -18713,13 +19122,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 379 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -18728,7 +19137,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -18797,16 +19206,17 @@ local.set $3 end i32.const 12 - i32.const 23 + i32.const 9 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -18824,20 +19234,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 373 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 380 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18847,19 +19256,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint32Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint32Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -18895,7 +19304,7 @@ end local.get $2 call $~lib/typedarray/Uint32Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -18916,9 +19325,9 @@ i32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -18946,9 +19355,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -18960,9 +19369,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -18974,9 +19383,9 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -18988,29 +19397,29 @@ i32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 381 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19020,7 +19429,7 @@ (local $7 i64) block $~lib/typedarray/REVERSE<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -19081,13 +19490,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 382 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -19096,7 +19505,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -19165,16 +19574,17 @@ local.set $3 end i32.const 12 - i32.const 24 + i32.const 10 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -19192,20 +19602,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 376 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 383 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19215,19 +19624,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int64Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int64Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -19265,7 +19674,7 @@ end local.get $2 call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -19287,9 +19696,9 @@ i64.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -19317,9 +19726,9 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -19331,9 +19740,9 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -19345,9 +19754,9 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -19359,29 +19768,29 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint64Array#reverse (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 384 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19391,7 +19800,7 @@ (local $7 i64) block $~lib/typedarray/REVERSE<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -19452,13 +19861,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 378 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 385 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -19467,7 +19876,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -19536,16 +19945,17 @@ local.set $3 end i32.const 12 - i32.const 25 + i32.const 11 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -19563,20 +19973,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 379 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 386 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19586,19 +19995,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint64Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint64Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -19636,7 +20045,7 @@ end local.get $2 call $~lib/typedarray/Uint64Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -19658,9 +20067,9 @@ i64.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -19688,9 +20097,9 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -19702,9 +20111,9 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -19716,9 +20125,9 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -19730,29 +20139,29 @@ i64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 380 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 387 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -19762,7 +20171,7 @@ (local $7 f32) block $~lib/typedarray/REVERSE<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -19823,13 +20232,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 381 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 388 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -19838,7 +20247,7 @@ (local $8 i32) block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $5 local.get $1 local.set $4 @@ -19907,16 +20316,17 @@ local.set $3 end i32.const 12 - i32.const 26 + i32.const 12 call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $7 local.get $7 local.tee $8 - local.get $5 - i32.load local.get $8 i32.load - call $~lib/rt/purerc/__retainRelease + local.get $5 + i32.load + call $~lib/rt/pure/__retainRelease i32.store local.get $7 local.get $5 @@ -19934,20 +20344,19 @@ i32.shl i32.store offset=8 local.get $7 - call $~lib/rt/purerc/__retain local.set $8 local.get $5 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $8 end local.tee $7 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $6 local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 382 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 389 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -19957,19 +20366,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Float32Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Float32Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -20007,7 +20416,7 @@ end local.get $2 call $~lib/typedarray/Float32Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -20029,9 +20438,9 @@ f32.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -20059,9 +20468,9 @@ f32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -20073,9 +20482,9 @@ f32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -20087,9 +20496,9 @@ f32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -20101,29 +20510,29 @@ f32.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#reverse (; 383 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 390 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -20133,7 +20542,7 @@ (local $7 f64) block $~lib/typedarray/REVERSE<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -20194,13 +20603,13 @@ local.get $1 end local.tee $2 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $1 local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 384 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 391 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20210,19 +20619,19 @@ (local $6 i32) (local $7 i32) global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Float64Array#constructor local.tee $1 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Float64Array#constructor local.tee $3 - call $~lib/rt/purerc/__retain + call $~lib/rt/pure/__retain local.set $4 i32.const 0 local.set $5 @@ -20260,7 +20669,7 @@ end local.get $2 call $~lib/typedarray/Float64Array#reverse - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release block $break|1 i32.const 0 local.set $5 @@ -20282,9 +20691,9 @@ f64.eq i32.eqz if - i32.const 1480 + i32.const 1512 i32.const 24 - i32.const 460 + i32.const 471 i32.const 4 call $~lib/builtins/abort unreachable @@ -20312,9 +20721,9 @@ f64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 465 + i32.const 476 i32.const 2 call $~lib/builtins/abort unreachable @@ -20326,9 +20735,9 @@ f64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 466 + i32.const 477 i32.const 2 call $~lib/builtins/abort unreachable @@ -20340,9 +20749,9 @@ f64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 467 + i32.const 478 i32.const 2 call $~lib/builtins/abort unreachable @@ -20354,29 +20763,29 @@ f64.eq i32.eqz if - i32.const 1568 + i32.const 1600 i32.const 24 - i32.const 468 + i32.const 479 i32.const 2 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release local.get $7 - call $~lib/rt/purerc/__release + call $~lib/rt/pure/__release ) - (func $start:std/typedarray (; 385 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 392 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -20387,12 +20796,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32.const 1 i32.eq @@ -20400,7 +20803,7 @@ if i32.const 0 i32.const 24 - i32.const 3 + i32.const 1 i32.const 0 call $~lib/builtins/abort unreachable @@ -20412,7 +20815,7 @@ if i32.const 0 i32.const 24 - i32.const 4 + i32.const 2 i32.const 0 call $~lib/builtins/abort unreachable @@ -20424,7 +20827,7 @@ if i32.const 0 i32.const 24 - i32.const 5 + i32.const 3 i32.const 0 call $~lib/builtins/abort unreachable @@ -20436,7 +20839,7 @@ if i32.const 0 i32.const 24 - i32.const 6 + i32.const 4 i32.const 0 call $~lib/builtins/abort unreachable @@ -20448,7 +20851,7 @@ if i32.const 0 i32.const 24 - i32.const 7 + i32.const 5 i32.const 0 call $~lib/builtins/abort unreachable @@ -20460,7 +20863,7 @@ if i32.const 0 i32.const 24 - i32.const 8 + i32.const 6 i32.const 0 call $~lib/builtins/abort unreachable @@ -20472,7 +20875,7 @@ if i32.const 0 i32.const 24 - i32.const 9 + i32.const 7 i32.const 0 call $~lib/builtins/abort unreachable @@ -20484,7 +20887,7 @@ if i32.const 0 i32.const 24 - i32.const 10 + i32.const 8 i32.const 0 call $~lib/builtins/abort unreachable @@ -20496,7 +20899,7 @@ if i32.const 0 i32.const 24 - i32.const 11 + i32.const 9 i32.const 0 call $~lib/builtins/abort unreachable @@ -20508,7 +20911,7 @@ if i32.const 0 i32.const 24 - i32.const 12 + i32.const 10 i32.const 0 call $~lib/builtins/abort unreachable @@ -20520,7 +20923,7 @@ if i32.const 0 i32.const 24 - i32.const 13 + i32.const 11 i32.const 0 call $~lib/builtins/abort unreachable @@ -20529,1035 +20932,1087 @@ call $std/typedarray/testInstantiate i32.const 5 call $std/typedarray/testInstantiate - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - global.set $std/typedarray/arr - global.get $std/typedarray/arr - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if + block i32.const 0 - i32.const 24 - i32.const 96 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.set $0 + local.get $0 i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 95 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - i32.const 24 - i32.const 97 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 96 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 98 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 99 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 100 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 101 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - block (result i32) - global.get $std/typedarray/arr - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 98 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 99 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 100 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#subarray - end - global.set $std/typedarray/arr - global.get $std/typedarray/arr - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.eq - i32.eqz - if + call $~lib/rt/pure/__skippedRelease + local.set $0 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 0 - i32.const 24 - i32.const 104 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 105 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 107 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - global.set $std/typedarray/af64 - global.get $std/typedarray/af64 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - block (result i32) - global.get $std/typedarray/af64 - call $~lib/rt/purerc/__release - global.get $std/typedarray/af64 + call $~lib/typedarray/Int32Array#__get i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - end - global.set $std/typedarray/af64 - global.get $std/typedarray/af64 - call $~lib/typedarray/Float64Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 121 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/af64 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.const 8 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 122 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/af64 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 - i32.const 8 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 123 - i32.const 0 - call $~lib/builtins/abort - unreachable + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 106 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release end block + i32.const 0 + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.set $0 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + call $~lib/rt/pure/__skippedRelease + local.set $0 + local.get $0 + call $~lib/typedarray/Float64Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 122 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 123 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 124 + i32.const 2 + call $~lib/builtins/abort + unreachable + end i32.const 0 global.set $~lib/argc - global.get $std/typedarray/af64 + local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#sort|trampoline - call $~lib/rt/purerc/__release - end - global.get $std/typedarray/af64 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - if (result i32) - global.get $std/typedarray/af64 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else + call $~lib/rt/pure/__release + local.get $0 i32.const 0 - end - if (result i32) - global.get $std/typedarray/af64 - i32.const 2 call $~lib/typedarray/Float64Array#__get - f64.const 6 + f64.const 4 f64.eq - else - i32.const 0 + if (result i32) + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 126 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release end - if (result i32) - global.get $std/typedarray/af64 + block + i32.const 0 i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else + call $~lib/typedarray/Uint8ClampedArray#constructor + local.set $0 + local.get $0 i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 135 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 136 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 137 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release end - i32.eqz - if + block i32.const 0 - i32.const 24 - i32.const 125 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.set $0 + local.get $0 i32.const 0 - call $~lib/builtins/abort - unreachable + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 488 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $2 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 149 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 560 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 152 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 155 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 608 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 158 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 632 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 161 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.set $1 + local.get $1 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 165 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 166 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 167 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.const 0 + i32.const 14 + i32.const 656 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 168 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 680 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $9 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 169 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release end - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - global.set $std/typedarray/clampedArr - global.get $std/typedarray/clampedArr - i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $std/typedarray/clampedArr - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $std/typedarray/clampedArr - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $std/typedarray/clampedArr - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 0 - i32.eq - i32.eqz - if + block i32.const 0 - i32.const 24 - i32.const 132 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.set $9 + local.get $9 i32.const 0 - call $~lib/builtins/abort - unreachable + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 704 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $1 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 181 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 744 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 784 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 187 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 824 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 190 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 864 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 193 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.set $8 + local.get $8 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 197 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 198 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 199 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 3 + i32.const 2 + i32.const 15 + i32.const 904 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 200 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 936 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 201 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release end - global.get $std/typedarray/clampedArr - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 133 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/clampedArr - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 134 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - global.set $std/typedarray/arr8 - global.get $std/typedarray/arr8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/arr8 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 - i32.const 5 - i32.const 0 - i32.const 28 - i32.const 400 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 144 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr8 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 - i32.const 5 - i32.const 0 - i32.const 28 - i32.const 528 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $2 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 147 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr8 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 - i32.const 5 - i32.const 0 - i32.const 28 - i32.const 552 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $3 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 150 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr8 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 - i32.const 5 - i32.const 0 - i32.const 28 - i32.const 576 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $4 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 153 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr8 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr8 - i32.const 5 - i32.const 0 - i32.const 28 - i32.const 600 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $5 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 156 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr8 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/sub8 - global.get $std/typedarray/sub8 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/sub8 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 160 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 161 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub8 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 162 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub8 - i32.const 3 - i32.const 0 - i32.const 28 - i32.const 624 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $6 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 163 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr8 - i32.const 5 - i32.const 0 - i32.const 28 - i32.const 648 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $7 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 164 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - global.set $std/typedarray/arr32 - global.get $std/typedarray/arr32 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $std/typedarray/arr32 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 - i32.const 5 - i32.const 2 - i32.const 29 - i32.const 672 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $8 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 174 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 - i32.const 5 - i32.const 2 - i32.const 29 - i32.const 712 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $9 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 177 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 - i32.const 5 - i32.const 2 - i32.const 29 - i32.const 752 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $10 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 180 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 - i32.const 5 - i32.const 2 - i32.const 29 - i32.const 792 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $11 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 183 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/arr32 - i32.const 5 - i32.const 2 - i32.const 29 - i32.const 832 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $12 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 186 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - global.set $std/typedarray/sub32 - global.get $std/typedarray/sub32 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/purerc/__release - global.get $std/typedarray/sub32 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 190 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub32 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 191 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub32 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 192 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/sub32 - i32.const 3 - i32.const 2 - i32.const 29 - i32.const 872 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $13 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 193 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/arr32 - i32.const 5 - i32.const 2 - i32.const 29 - i32.const 904 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $14 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 194 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.get $std/typedarray/MAX_F64LENGTH - call $~lib/typedarray/Float64Array#constructor - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - global.set $std/typedarray/multisubarr - global.get $std/typedarray/multisubarr - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - global.get $std/typedarray/multisubarr - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/multisubarr1 - global.get $std/typedarray/multisubarr1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 211 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr1 - call $~lib/typedarray/Int8Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 212 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 213 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 214 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr1 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/multisubarr2 - global.get $std/typedarray/multisubarr2 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 217 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - call $~lib/typedarray/Int8Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 218 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 219 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 220 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr2 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - global.set $std/typedarray/multisubarr3 - global.get $std/typedarray/multisubarr3 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 223 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr3 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 224 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 225 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/multisubarr3 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 226 - i32.const 0 - call $~lib/builtins/abort - unreachable + block + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.set $7 + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.set $0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 222 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 223 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 224 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 225 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.set $8 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 228 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/typedarray/Int8Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 229 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 231 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.set $3 + local.get $3 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 234 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 235 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 236 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 237 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release end call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> @@ -21647,36 +22102,12 @@ call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $11 - call $~lib/rt/purerc/__release - local.get $12 - call $~lib/rt/purerc/__release - local.get $13 - call $~lib/rt/purerc/__release - local.get $14 - call $~lib/rt/purerc/__release + global.get $std/typedarray/forEachValues + call $~lib/rt/pure/__release + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/pure/__release ) - (func $std/typedarray/main (; 386 ;) (type $FUNCSIG$v) + (func $std/typedarray/main (; 393 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -21685,254 +22116,16 @@ global.set $~lib/started end ) - (func $start (; 387 ;) (type $FUNCSIG$v) + (func $start (; 394 ;) (type $FUNCSIG$v) call $start:std/typedarray ) - (func $~lib/rt/common/__typeinfo (; 388 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if - i32.const 288 - i32.const 1672 - i32.const 55 - i32.const 34 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/purerc/growRoots (; 389 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 - global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - global.set $~lib/rt/purerc/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/purerc/END - ) - (func $~lib/rt/purerc/appendRoot (; 390 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/purerc/END - i32.ge_u - if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/purerc/CUR - ) - (func $~lib/rt/purerc/decrement (; 391 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - call $~lib/rt/purerc/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/builtins/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 424 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/common/__typeinfo - i32.const 8 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/purerc/__retainRelease (; 392 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.ne - if - global.get $~lib/builtins/HEAP_BASE - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - end - local.get $0 - ) - (func $~lib/rt/purerc/__release (; 393 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) - (func $~lib/array/Array#__visit_impl (; 394 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 395 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/array/Array#__visit_impl (; 395 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 396 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/rt/purerc/markGray (; 396 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/markGray (; 397 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -21956,10 +22149,10 @@ i32.const 16 i32.add i32.const 2 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 397 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 398 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -21974,9 +22167,9 @@ i32.const 16 i32.add i32.const 4 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members ) - (func $~lib/rt/purerc/scan (; 398 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/scan (; 399 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -21994,7 +22187,7 @@ i32.gt_u if local.get $0 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack else local.get $0 local.get $1 @@ -22009,11 +22202,11 @@ i32.const 16 i32.add i32.const 3 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end end ) - (func $~lib/rt/purerc/collectWhite (; 399 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 400 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -22036,17 +22229,17 @@ i32.const 16 i32.add i32.const 5 - call $~lib/builtins/__visit_members + call $~lib/rt/__visit_members end global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 400 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 401 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + global.get $~lib/heap/HEAP_BASE i32.lt_u if return @@ -22088,7 +22281,7 @@ end block local.get $2 - call $~lib/rt/purerc/decrement + call $~lib/rt/pure/decrement br $break|0 unreachable end @@ -22104,7 +22297,7 @@ i32.eqz if i32.const 0 - i32.const 424 + i32.const 288 i32.const 74 i32.const 17 call $~lib/builtins/abort @@ -22117,7 +22310,7 @@ i32.sub i32.store offset=4 local.get $2 - call $~lib/rt/purerc/markGray + call $~lib/rt/pure/markGray br $break|0 unreachable end @@ -22125,7 +22318,7 @@ end block local.get $2 - call $~lib/rt/purerc/scan + call $~lib/rt/pure/scan br $break|0 unreachable end @@ -22151,7 +22344,7 @@ i32.eqz if i32.const 0 - i32.const 424 + i32.const 288 i32.const 85 i32.const 6 call $~lib/builtins/abort @@ -22169,7 +22362,7 @@ i32.ne if local.get $2 - call $~lib/rt/purerc/scanBlack + call $~lib/rt/pure/scanBlack end br $break|0 unreachable @@ -22178,7 +22371,7 @@ end block local.get $2 - call $~lib/rt/purerc/collectWhite + call $~lib/rt/pure/collectWhite br $break|0 unreachable end @@ -22188,7 +22381,7 @@ i32.eqz if i32.const 0 - i32.const 424 + i32.const 288 i32.const 96 i32.const 24 call $~lib/builtins/abort @@ -22196,26 +22389,26 @@ end end ) - (func $~lib/builtins/__visit_members (; 401 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 402 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$16$break + block $block$4$break block end block $switch$1$leave - block $switch$1$case$31 - block $switch$1$case$30 + block $switch$1$default + block $switch$1$case$17 block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$30 $switch$1$case$31 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$16 $switch$1$case$17 $switch$1$default end block block - unreachable + return unreachable end unreachable @@ -22224,17 +22417,24 @@ unreachable end block + br $block$4$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl block - return + br $block$4$break unreachable end unreachable unreachable end unreachable - end - block - br $block$16$break unreachable end unreachable @@ -22243,9 +22443,9 @@ block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl + call $~lib/array/Array#__visit_impl block - br $block$16$break + br $block$4$break unreachable end unreachable @@ -22258,13 +22458,6 @@ end block block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end unreachable unreachable end @@ -22282,7 +22475,7 @@ if local.get $2 local.get $1 - call $~lib/rt/purerc/__visit + call $~lib/rt/pure/__visit end return unreachable @@ -22292,6 +22485,6 @@ end unreachable ) - (func $null (; 402 ;) (type $FUNCSIG$v) + (func $null (; 403 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/switch.optimized.wat b/tests/compiler/switch.optimized.wat index cb0fb4a3..64f90523 100644 --- a/tests/compiler/switch.optimized.wat +++ b/tests/compiler/switch.optimized.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") (export "memory" (memory $0)) (start $start) (func $switch/doSwitch (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.untouched.wat index 83b701f9..39043235 100644 --- a/tests/compiler/switch.untouched.wat +++ b/tests/compiler/switch.untouched.wat @@ -4,7 +4,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00") + (data (i32.const 8) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (export "memory" (memory $0)) diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat index fd6525e1..1f25f27c 100644 --- a/tests/compiler/unary.optimized.wat +++ b/tests/compiler/unary.optimized.wat @@ -50,16 +50,10 @@ global.get $unary/i i32.const 1 i32.add - local.tee $2 - global.set $unary/i - local.get $2 global.set $unary/i global.get $unary/i i32.const 1 i32.sub - local.tee $2 - global.set $unary/i - local.get $2 global.set $unary/i global.get $unary/i local.tee $2 @@ -114,16 +108,10 @@ global.get $unary/I i64.const 1 i64.add - local.tee $3 - global.set $unary/I - local.get $3 global.set $unary/I global.get $unary/I i64.const 1 i64.sub - local.tee $3 - global.set $unary/I - local.get $3 global.set $unary/I global.get $unary/I local.tee $3 @@ -172,16 +160,10 @@ local.get $0 f32.const 1 f32.add - local.tee $0 - global.set $unary/f - local.get $0 global.set $unary/f global.get $unary/f f32.const 1 f32.sub - local.tee $0 - global.set $unary/f - local.get $0 global.set $unary/f global.get $unary/f local.tee $0 @@ -231,16 +213,10 @@ local.get $1 f64.const 1 f64.add - local.tee $1 - global.set $unary/F - local.get $1 global.set $unary/F global.get $unary/F f64.const 1 f64.sub - local.tee $1 - global.set $unary/F - local.get $1 global.set $unary/F global.get $unary/F local.tee $1 diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.untouched.wat index e0fbbd53..44abc69a 100644 --- a/tests/compiler/unary.untouched.wat +++ b/tests/compiler/unary.untouched.wat @@ -90,18 +90,16 @@ global.get $unary/i i32.const 1 i32.add - local.tee $0 global.set $unary/i - local.get $0 + global.get $unary/i end global.set $unary/i block (result i32) global.get $unary/i i32.const 1 i32.sub - local.tee $0 global.set $unary/i - local.get $0 + global.get $unary/i end global.set $unary/i block (result i32) @@ -181,18 +179,16 @@ global.get $unary/I i64.const 1 i64.add - local.tee $1 global.set $unary/I - local.get $1 + global.get $unary/I end global.set $unary/I block (result i64) global.get $unary/I i64.const 1 i64.sub - local.tee $1 global.set $unary/I - local.get $1 + global.get $unary/I end global.set $unary/I block (result i64) @@ -259,18 +255,16 @@ global.get $unary/f f32.const 1 f32.add - local.tee $2 global.set $unary/f - local.get $2 + global.get $unary/f end global.set $unary/f block (result f32) global.get $unary/f f32.const 1 f32.sub - local.tee $2 global.set $unary/f - local.get $2 + global.get $unary/f end global.set $unary/f block (result f32) @@ -339,18 +333,16 @@ global.get $unary/F f64.const 1 f64.add - local.tee $3 global.set $unary/F - local.get $3 + global.get $unary/F end global.set $unary/F block (result f64) global.get $unary/F f64.const 1 f64.sub - local.tee $3 global.set $unary/F - local.get $3 + global.get $unary/F end global.set $unary/F block (result f64) diff --git a/tests/compiler/wasi.optimized.wat b/tests/compiler/wasi.optimized.wat index 57bc5ef6..3f8cc8dd 100644 --- a/tests/compiler/wasi.optimized.wat +++ b/tests/compiler/wasi.optimized.wat @@ -1,7 +1,7 @@ (module (type $FUNCSIG$v (func)) (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s") + (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s") (global $wasi/sig (mut i32) (i32.const 1)) (export "memory" (memory $0)) (start $start) diff --git a/tests/compiler/wasi.ts b/tests/compiler/wasi.ts index cf2a76db..c86ef137 100644 --- a/tests/compiler/wasi.ts +++ b/tests/compiler/wasi.ts @@ -1,5 +1,5 @@ import { dirent, rwevent, fdstat, filestat, iovec, clocksubscription, fdsubscription, signal, dirprestat } from "bindings/wasi"; -import { Target } from "common/target"; +import { Target } from "shared/target"; assert(offsetof("next") == 0); assert(offsetof("ino") == 8); diff --git a/tests/compiler/wasi.untouched.wat b/tests/compiler/wasi.untouched.wat index be16b879..1375bdce 100644 --- a/tests/compiler/wasi.untouched.wat +++ b/tests/compiler/wasi.untouched.wat @@ -3,12 +3,12 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s\00") + (data (i32.const 8) "\0e\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/common/target/Target.WASM32 i32 (i32.const 0)) - (global $~lib/common/target/Target.WASM64 i32 (i32.const 1)) - (global $~lib/common/target/Target.JS i32 (i32.const 2)) + (global $~lib/shared/target/Target.WASM32 i32 (i32.const 0)) + (global $~lib/shared/target/Target.WASM64 i32 (i32.const 1)) + (global $~lib/shared/target/Target.JS i32 (i32.const 2)) (global $~lib/ASC_TARGET i32 (i32.const 0)) (global $wasi/sig (mut i32) (i32.const 1)) (export "memory" (memory $0)) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index 2abcae59..a6bdb945 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") + (data (i32.const 8) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") (global $while/n (mut i32) (i32.const 10)) (global $while/m (mut i32) (i32.const 0)) (global $while/o (mut i32) (i32.const 0)) @@ -139,17 +139,15 @@ i32.sub global.set $while/n local.get $0 - if + if (result i32) global.get $while/m i32.const 1 i32.add - local.tee $0 global.set $while/m + global.get $while/m else i32.const 0 - local.set $0 end - local.get $0 br_if $continue|3 end global.get $while/n diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index f8bf6182..8fc14b6f 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -3,7 +3,7 @@ (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00") + (data (i32.const 8) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $while/n (mut i32) (i32.const 10)) @@ -167,9 +167,8 @@ global.get $while/m i32.const 1 i32.add - local.tee $0 global.set $while/m - local.get $0 + global.get $while/m else i32.const 0 end